storing data in a matrix from a nested loop
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
rajesh regar
il 11 Set 2019
Commentato: rajesh regar
il 11 Set 2019
I want to save the vector made from d12 each time i.e. d12 is 4*3 matrix. d12 in nested loop
d1 = [0 0 2
0 0 -2 ];
d2 = [0 0 15
0 0 13 ];
for i = 1:2
for j = 1:2
d12() = [d1(i,:)-d2(j,:)];
end
end
0 Commenti
Risposta accettata
rajesh regar
il 11 Set 2019
Più risposte (2)
Stephen23
il 11 Set 2019
Modificato: Stephen23
il 11 Set 2019
No loops required:
>> d1 = [0,0,2;0,0,-2]
d1 =
0 0 2
0 0 -2
>> d2 = [0,0,15;0,0,13]
d2 =
0 0 15
0 0 13
>> out = repelem(d1,size(d2,1),1) - repmat(d2,size(d1,1),1)
out =
0 0 -13
0 0 -11
0 0 -17
0 0 -15
This gives exactly the sme output as your nested loops:
>> isequal(out,d12)
ans =
1
2 Commenti
madhan ravi
il 11 Set 2019
Modificato: madhan ravi
il 11 Set 2019
[m,n]=size(d1);
[m1,n1]=size(d2);
z = permute(reshape(d1.',1,n,m) - d2,[2,1,3])
d12 = reshape(z,n,[]).'
% Or if you prefer a loop
k = 1;
d12 = zeros(m+m1,n); % preallocate
for ii = 1:m % don't hardcode the sizes , use size() instead
for jj = 1:m1
d12(k,:) = d1(ii,:) - d2(jj,:);
k = k+1;
end
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!