for loops not working

4 visualizaciones (últimos 30 días)
sriram amarnath
sriram amarnath el 24 de Jun. de 2019
Comentada: sriram amarnath el 24 de Jun. de 2019
The below code is to calculate the modes on a plate. The for loops are not using all the values of m & n
% Modes on a plate
Lx=0.286; % length of plate(m)
Lz=0.198; % breadth of plate(m)
for m = 1:1000 % mode numbers
for n = 1:10
func=((n.*pi)./Lx).^2 +((m.*pi)./Lz).^2;% summation function n=1:10 & m= 1:1000
end
end
  2 comentarios
dpb
dpb el 24 de Jun. de 2019
I'm sure the loop runs 10,000 times--only you don't do anything inside the loop except write over the same variable with each computed value in succession so all you get in the end is the very last value.
sriram amarnath
sriram amarnath el 24 de Jun. de 2019
So how do i get a matrix of every value?

Iniciar sesión para comentar.

Respuesta aceptada

madhan ravi
madhan ravi el 24 de Jun. de 2019
Editada: madhan ravi el 24 de Jun. de 2019
The same goal can be achieved trivially using meshgrid() or ndgrid() without a loop:
% Modes on a plate
Lx=0.286; % length of plate(m)
Lz=0.198; % breadth of plate(m)
n=10;
m=1000;
[Y,X]= ndgrid(1:m,1:n);
func=(X*pi/Lx).^2 +(Y*pi/Lz).^2;
But the modication in your code is as follows:
func = zeros(1000,10); % before loop
func(m,n) = ... %just add (m,n) next to func inside the loop
  1 comentario
sriram amarnath
sriram amarnath el 24 de Jun. de 2019
Thanks madhan ravi your a saviour!

Iniciar sesión para comentar.

Más respuestas (1)

dpb
dpb el 24 de Jun. de 2019
"The MATLAB way" is to avoid the loops altogether...
N=10; M=1000;
[X,Y]=meshgrid([1:N],1:M]);
func=(X*pi/Lx).^2 +(Y*pi/Lz).^2;

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by