MATLAB Answers

How to save multiple output?

조회 수: 4(최근 30일)
Noor Bano
Noor Bano 2021년 9월 15일
댓글: Noor Bano 2021년 9월 15일
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.

채택된 답변

Mathieu NOE
Mathieu NOE 2021년 9월 15일
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
Noor Bano
Noor Bano 2021년 9월 15일
well said, thank you very much.

댓글을 달려면 로그인하십시오.

추가 답변(1개)

Steven Lord
Steven Lord 2021년 9월 15일
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!

Translated by