MATLAB Answers

# 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

#### 0 Comments

Sign in to comment.

### Accepted Answer

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

#### 5 Comments

Show 2 older comments
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

Sign in to comment.