MATLAB Answers

How to save multiple output?

5 views (last 30 days)
Noor Bano
Noor Bano on 15 Sep 2021
Commented: Noor Bano on 15 Sep 2021
a =randperm(18);
b=reshape(a,9,2);
vals=b;
[m,n] =size(vals) ;
for i = 1:m
[A,x,y]=myfunction(I,vals(i,1), vals(i,2));
end
[A,x,y] is the output of myfunction.
How to save A, x and y where A is a square matrix, x and y both are single vaues.

Accepted Answer

Mathieu NOE
Mathieu NOE on 15 Sep 2021
hello
I would recommend to use structures (indexed) like in this example
a =randperm(18);
b=reshape(a,9,2);
vals=b;
[m,n] =size(vals) ;
I = rand(3,5);
for i = 1:m
[A,x,y]=myfunction(I,vals(i,1), vals(i,2));
output{i}.A = A;
output{i}.x = x;
output{i}.y = y;
end
% [A,x,y] is the output of myfunction.
% How to save A, x and y where A is a square matrix, x and y both are single vaues.
%%%%%%%%%%%%%%%%%%
function [A,x,y] = myfunction(I,a,b)
A = I ;
x = a;
y = b;
end
so , for example , to access the data from the first iteration :
output{1}
ans =
struct with fields:
A: [3×5 double]
x: 14
y: 7
>> output{1}.A
ans =
0.6948 0.0344 0.7655 0.4898 0.7094
0.3171 0.4387 0.7952 0.4456 0.7547
0.9502 0.3816 0.1869 0.6463 0.2760
>> output{1}.x
ans = 14
  3 Comments
Noor Bano
Noor Bano on 15 Sep 2021
well said, thank you very much.

Sign in to comment.

More Answers (1)

Steven Lord
Steven Lord on 15 Sep 2021
In your code:
%{
for i = 1:m
[A,x,y]=myfunction(I,vals(i,1), vals(i,2));
end
%}
is A always going to be the same size? If so consider making a 3-dimensional array:
A = magic(3);
B = zeros([size(A), 5]);
for k = 1:5
B(:, :, k) = A.^k;
end
B(:, :, 3) % The cube of each element in A
ans = 3×3
512 1 216 27 125 343 64 729 8
Similarly for your scalar x and y values, store them in a vector or a 3-dimensional equivalent.

Community Treasure Hunt

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

Start Hunting!