How to Store Output from Function Within Nested for Loop
显示 更早的评论
I have the following code:
Fes=10:1:11;
Fe0=12:1:13;
for y=1:numel(Fes);
for z=1:numel(Fe0);
puppies(Fes(y),Fe0(z))
end
end
Puppies is a function that produces two vectors for each combination of Fes and Fe0. I would like to store the result of puppies in a table, contained within my workspace, that shows each result, labelled with the particular Fes and Fe0 combination that produced the result (with each result being the two vectors generated from an individual Fes and Fe0 combination).
How can I do this?
回答(1 个)
Rik
2020-5-8
The same way you capture any output from a function. You might need an intermediate step to put your vectors in a cell first.
Fes=10:1:11;
Fe0=12:1:13;
for y=1:numel(Fes);
for z=1:numel(Fe0);
[A,B]=puppies(Fes(y),Fe0(z));
%now you can store A, B, Fes(y), and Fe0(z) in a table
end
end
Alternatively, you could store Fes and fe0 in a table and then use rowfun.
4 个评论
Jonathan Pinko
2020-5-9
Rik
2020-5-10
You wanted to store the results in a table. That is why I wrote that comment: my intention was that you would write the code to store those values in a table the way you prefer. Because every element in a table can only contain 1 value, you will need to put them in a cell first.
I would use a 3D array instead of a table, but that depends on what you are planning to do next.
Jonathan Pinko
2020-5-10
编辑:Jonathan Pinko
2020-5-10
Rik
2020-5-11
Fes=10:1:11;
Fe0=12:1:13;
for y=1:numel(Fes)
for z=1:numel(Fe0)
if y==1 && z==1
[a,b]=puppies(Fes(y),Fe0(z));
A=zeros(numel(Fes),numel(Fe0),numel(a));
A(1,1,:)=a;
B=zeros(numel(Fes),numel(Fe0),numel(b));
B(1,1,:)=b;
else
[A(y,z,:),B(y,z,:)]=puppies(Fes(y),Fe0(z));
end
end
end
function [a,b]=puppies(y,z)
a=rand(100,1);
b=rand(5,1);
end
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!