2 different for loops at the same time ?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Gökçe Öter
le 19 Mai 2018
Commenté : Gökçe Öter
le 19 Mai 2018
Hi, I've just tried to make 2 for loops at the same time but I couldn't achieve that properly. Assume that "A" can be any matrix. I upload example.xlsx file as an .txt file.
A = xlsread('example.xlsx');
for ii= 5:5:length(A);
for jj= 4:5:length(A);
M=A(ii,11)*(10^A(jj,1))
end
end
When I try this code I get 16 M as an answer, I want to take 4 answers. Does anybody have any clue that can help ?
0 commentaires
Réponse acceptée
Walter Roberson
le 19 Mai 2018
A = xlsread('example.xlsx');
iivals = 5:5:length(A);
jjvals = 4:5:length(A);
numii = length(iivals);
numjj = length(jjvals);
M = zeros(numii, numjj);
for ii_idx = 1 : numii
ii = iivals(ii_idx);
for jj_idx = 1 : numjj
jj = jjvals(jj_idx);
M(ii_idx, jj_idx) = A(ii,11)*(10^A(jj,1))
end
end
3 commentaires
Walter Roberson
le 19 Mai 2018
A = xlsread('example.xlsx');
for ii= 5:5:length(A);
M( ii/5 ) = A(ii,11) * (10^A(ii-1,1))
end
Plus de réponses (3)
Majid Farzaneh
le 19 Mai 2018
Modifié(e) : Majid Farzaneh
le 19 Mai 2018
Hi, It's better use size(A,1) [for number of rows] or size(A,2) [for number of columns] instead of length(A). Because it's may not exactly what you want. At the M=A(ii,11)*(10^A(jj,1)) if you want to multiply values element by element you should use '.*' instead of '*'.
for ii= 5:5:size(A,1);
for jj= 4:5:size(A,1);
M=A(ii,11).*(10^A(jj,1))
end
end
Rik
le 19 Mai 2018
You must index M.
jj_= 4:5:length(A);
ii_= 5:5:length(A);
A = xlsread('example.xlsx');
M=zeros(numel(ii),numel(jj));%pre-allocate
for ii=1:numel(ii_)
for jj=1:numel(jj_)
M(ii,jj)=A(ii_(ii),11)*(10^A(jj_(jj),1));
end
end
0 commentaires
Ameer Hamza
le 19 Mai 2018
Modifié(e) : Ameer Hamza
le 19 Mai 2018
You don't need a for loop. Replace it with this:
M = A(5:5:length(A), 11).*10.^(A(4:5:length(A), 1));
This will work in R2016b and later.
4 commentaires
Ameer Hamza
le 19 Mai 2018
As you can see, that your final answer is the first column of of 4x4 matrix. So you can get it like this
M = A(5:5:length(A), 11)*10.^(A(4:5:length(A), 1))';
M = M(:,1);
It will give you your required 4 numbers
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!