2 different for loops at the same time ?

1 visualización (últimos 30 días)
Gökçe Öter
Gökçe Öter el 19 de Mayo de 2018
Comentada: Gökçe Öter el 19 de Mayo de 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 ?

Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Mayo de 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 comentarios
Walter Roberson
Walter Roberson el 19 de Mayo de 2018
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 el 19 de Mayo de 2018
Thank you so much !

Iniciar sesión para comentar.

Más respuestas (3)

Majid Farzaneh
Majid Farzaneh el 19 de Mayo de 2018
Editada: Majid Farzaneh el 19 de Mayo de 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
  1 comentario
Gökçe Öter
Gökçe Öter el 19 de Mayo de 2018
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.

Iniciar sesión para comentar.


Rik
Rik el 19 de Mayo de 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

Ameer Hamza
Ameer Hamza el 19 de Mayo de 2018
Editada: Ameer Hamza el 19 de Mayo de 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 comentarios
Gökçe Öter
Gökçe Öter el 19 de Mayo de 2018
My data set is messed up but I upload this if you want to look at it.
Ameer Hamza
Ameer Hamza el 19 de Mayo de 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

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by