2 different for loops at the same time ?

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 日

2 投票

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 件のコメント

Gökçe Öter
Gökçe Öter 2018 年 5 月 19 日
Thanks for your effort and quick answer also but with this code i get 16 matrix answers, I just want to get 4 value as an answer which are multiplication of two elements of A matrix.
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 日

2 投票

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 日

1 投票

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 日

1 投票

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 日
Thank you so much, but this code gives
1.0e+24 *
0.1312 0.1312 0.1312 1.3120
0.3681 0.3681 0.3681 3.6810
0.6380 0.6380 0.6380 6.3800
0.4334 0.4334 0.4334 4.3340
But I want to get an answer as
0.1312*1.0e+24 0.3681*1.0e+24 0.6380*1.0e+24 0.4334*1.0e+24
Ameer Hamza
Ameer Hamza 2018 年 5 月 19 日
Since you didn't give the dataset so it is hard to see what you want. But try the updated statement.
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

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

カテゴリ

製品

リリース

R2017b

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by