Store function results from for loop
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Nicolas Caride
el 2 de Abr. de 2022
Comentada: Nicolas Caride
el 2 de Abr. de 2022
This is a project for a class.
Three variables d_o_shaft, h and w are the inputs.
Two outputs are Defl and Nf.
I'd like to store the three inputs in a 3xn matrix every time they meet a certain criteria; 1.3 <= Nf < 1.31 and Defl < .01.
This is the basic structure of my code, I simplified the equations for visual ease.
for do_shaft = .04:.001:.14
for h = .01:.001:.10
for w = .01:.001:.10
Nf = func(inputs)
Defl = func(inputs)
end
end
end
0 comentarios
Respuesta aceptada
Torsten
el 2 de Abr. de 2022
i = 0;
for do_shaft = .04:.001:.14
for h = .01:.001:.10
for w = .01:.001:.10
Nf = func(inputs)
Defl = func(inputs)
if Nf >= 1.3 && Nf <= 1.31 && Defl <= 0.01
i = i + 1;
matrix(1:3,i) =[do_shaft,h,w]
end
end
end
end
4 comentarios
Voss
el 2 de Abr. de 2022
@Nicolas Caride It is a good idea to initialize matrix to empty before the loop (as in my answer), especially if you are running this in the base workspace. For instance, if the conditions are never met, matrix will be whatever it was before you ran this code, which may be something completely unrelated or it may not exist at all. In general, without initializing first, you're attempting to add a column (or row) to a matrix that may be the wrong size, in which case you'll run into an error.
Más respuestas (1)
Voss
el 2 de Abr. de 2022
matrix = [];
for do_shaft = .04:.001:.14
for h = .01:.001:.10
for w = .01:.001:.10
Nf = func(inputs);
Defl = func(inputs);
if Nf >= 1.3 && Nf < 1.31 && Defl < 0.01
matrix(:,end+1) = [do_shaft; h; w];
end
end
end
end
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!