2 different for loops at the same time ?

1 回表示 (過去 30 日間)
Gökçe Öter
Gökçe Öter 2018 年 5 月 19 日
コメント済み: Gökçe Öter 2018 年 5 月 19 日
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 ?

採用された回答

Walter Roberson
Walter Roberson 2018 年 5 月 19 日
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 件のコメント
Walter Roberson
Walter Roberson 2018 年 5 月 19 日
A = xlsread('example.xlsx');
for ii= 5:5:length(A);
M( ii/5 ) = A(ii,11) * (10^A(ii-1,1))
end
Gökçe Öter
Gökçe Öter 2018 年 5 月 19 日
Thank you so much !

サインインしてコメントする。

その他の回答 (3 件)

Majid Farzaneh
Majid Farzaneh 2018 年 5 月 19 日
編集済み: Majid Farzaneh 2018 年 5 月 19 日
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
  1 件のコメント
Gökçe Öter
Gökçe Öter 2018 年 5 月 19 日
Thanks for your effort, but with this code i get 16 matrix answers, I just want to get 4 value as an answer
0.1312*1.0e+24 0.3681*1.0e+24 0.6380*1.0e+24 0.4334*1.0e+24
which are multiplication of two elements of A matrix.

サインインしてコメントする。


Rik
Rik 2018 年 5 月 19 日
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

Ameer Hamza
Ameer Hamza 2018 年 5 月 19 日
編集済み: Ameer Hamza 2018 年 5 月 19 日
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 件のコメント
Gökçe Öter
Gökçe Öter 2018 年 5 月 19 日
My data set is messed up but I upload this if you want to look at it.
Ameer Hamza
Ameer Hamza 2018 年 5 月 19 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

製品


リリース

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by