Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
How to avoid using for loops when declaring functions in a cell array
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
In my source codes:
clear all
fout=cell(1,10);
B=zeros(10,20);
for ii=1:1:10
fout{ii}=@(x) 2*pi*x*(1:1:20)+ii;
end
for ii=1:1:10
B(ii,:)=fout{ii}(2);
end
display(B);
How can I use the matlab vectorization to declare functions in a cell array as well as to provide function outputs in one go rather than using two for loops? M
0 comentarios
Respuestas (1)
Adam Danz
el 11 de Sept. de 2020
Editada: Adam Danz
el 11 de Sept. de 2020
You only need 1 anonymous function if you include ii as a second input. ii must be a column vector and x must be a row vector.
fout = @(x,ii) 2*pi*x*(1:1:20)+ii;
B = fout(2,(1:10)');
Alternatively, the 2nd loop in your question can be replaced by
y = cell2mat(arrayfun(@(i){fout{i}(2)},1:10)');
however, your loop is more efficient, faster, and easier to read.
4 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!