How to assign a different name of a matrix for each iteration?
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ana Bianco
el 9 de Sept. de 2019
Comentada: Ana Bianco
el 9 de Sept. de 2019
Hi everyone,
I am trying to, for each iteration (that goes from 1 to 270), assign a different name for the result matrix of the function modalfit from Matlab Signal Processing Toolbox.
The matrix is a 1x10 for each iteration.
For example, I want for j=1 that the matrix is called [fn1] and saved in the workspace...
This is the code:
for j = 1 : size(varargout,2)
[fn]= modalfit(varargout{1,j}, f, fs, 10, 'FreqRange', [0 3000], 'FitMethod' , 'PP');
end
I would be very happy to be helped.
Thanks, Ana
0 comentarios
Respuesta aceptada
Fabio Freschi
el 9 de Sept. de 2019
Don't use this sintax (for details, see https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval). You can use a cell array
% preallocation
fn = cell(size(varargout,2),1);
for j = 1 : size(varargout,2)
fn{j} = modalfit(varargout{1,j}, f, fs, 10, 'FreqRange', [0 3000], 'FitMethod' , 'PP');
end
and you can get the desired matrix as fn{1}, fn{2}, etc.
Más respuestas (1)
Johannes Fischer
el 9 de Sept. de 2019
for j = 1 : size(varargout,2)
fn = modalfit(varargout{1,j}, f, fs, 10, 'FreqRange', [0 3000], 'FitMethod' , 'PP');
assignin('base', ['fn' num2str(i)], fn)
end
but what speaks against storing it all in one 270x10 matrix?
fn = zeros(size(varargout,2), 10)
for j = 1 : size(varargout,2)
fn(j, :) = modalfit(varargout{1,j}, f, fs, 10, 'FreqRange', [0 3000], 'FitMethod' , 'PP');
end
Ver también
Categorías
Más información sobre Logical 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!