# Insert missing values in specified positions and use for loop

3 views (last 30 days)
Hamdia Mansour on 25 Jun 2020
Commented: Hamdia Mansour on 28 Jun 2020
Hi everybody could anyone help me in my problem: i have an array with known missed values in known places . I want to insert these values in the specified positions and do it for many arrays. Example a=[2 4 6 3 3 5 3 4 1 0 0 0 0] Li=[2 8 10 12] %locations of values in array Val=[6 7 8 9] Solution should be Sol=[2 6 4 6 3 3 5 7 3 8 4 9 1] Also how to apply this in for loop for multiple arrays Thanks in advance

KSSV on 25 Jun 2020
This problem is dicussed multiple times....you can checki there in this useful link:

Hamdia Mansour on 25 Jun 2020
Thanks KSSV for your time and reply. It works very good for the array but I still found problem for the matrix. I write this for loop to solve it for i=1:3 %3 is no of rows in matrix for j=1:4 % 4 is length of li iwant(I,li(j))=val(j); Idx(i)=logical(zeros(sizeallol(i))); idx(i,li(j))=1 %%%the problem in the following line %%% iwant(~idx)=a(a~=0) %how to make it inside loop end end Thanks in advance and sorry for little knowledge in matlab
KSSV on 26 Jun 2020
a = [1 2 3 4 5 6 7 8 9; 3 4 1 2 5 6 7 2 8; 9 8 1 2 5 6 7 2 3];
val = [ 6 7 8 9] ;
col = [2 8 10 12] ;
b = [1 6 2 3 4 5 6 7 7 8 8 9 9; 3 6 4 1 2 5 6 7 7 8 2 9 8; 9 6 8 1 2 5 6 7 7 8 2 9 3] ;
[m,n] = size(a) ; p = length(col) ;
iwant = zeros(m,n+p) ;
for i = 1:m
iwant(i,col) = val ;
% Make logical indices
idx = logical(zeros(1,n+p)) ;
idx(col) = 1 ;
iwant(i,~idx) = a(i,:) ;
end
Hamdia Mansour on 28 Jun 2020
Thank you very much for your help