多个不同大小的输出函数?
multiple different sized output function?
我需要 MATLAB return 多个不同大小的输出,即一个是 n x m 矩阵,另一个是向量
function output = name(arg1,arg2,...,argn)
blabla
output = {A;B};
end
当我输入时
{A;B}=name(arg1,arg2,...,argn)
我收到这个错误
Error: The expression to the left of the equals sign is
not a valid target for an assignment.
如何获得这些多个输出?我不想打印它们;我需要在进一步的计算中使用输出。
这是可以做到的:
function [a,b,c,d] = test(x,y,z)
a = whatever;
b = whatever;
c = whatever;
d = whatever;
end
您还可以为函数输出使用 varargout 选项,这样您就可以分配(信不信由你)可变数量的输出。
例如,考虑这个函数:
function [varargout] = YourFcn(arg1,arg2)
A = arg1;
B = arg2;
varargout = {A;B};
end
然后您可以在命令 window 或脚本中调用您的函数并收集结果,例如:
x = rand(1,10);
y = magic(5);
[A,B] = YourFcn(x,y)
这导致 A 和 B 被分配输出:
A =
Columns 1 through 5
0.8147 0.9058 0.1270 0.9134 0.6324
Columns 6 through 10
0.0975 0.2785 0.5469 0.9575 0.9649
B =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
我需要 MATLAB return 多个不同大小的输出,即一个是 n x m 矩阵,另一个是向量
function output = name(arg1,arg2,...,argn)
blabla
output = {A;B};
end
当我输入时
{A;B}=name(arg1,arg2,...,argn)
我收到这个错误
Error: The expression to the left of the equals sign is not a valid target for an assignment.
如何获得这些多个输出?我不想打印它们;我需要在进一步的计算中使用输出。
这是可以做到的:
function [a,b,c,d] = test(x,y,z)
a = whatever;
b = whatever;
c = whatever;
d = whatever;
end
您还可以为函数输出使用 varargout 选项,这样您就可以分配(信不信由你)可变数量的输出。
例如,考虑这个函数:
function [varargout] = YourFcn(arg1,arg2)
A = arg1;
B = arg2;
varargout = {A;B};
end
然后您可以在命令 window 或脚本中调用您的函数并收集结果,例如:
x = rand(1,10);
y = magic(5);
[A,B] = YourFcn(x,y)
这导致 A 和 B 被分配输出:
A =
Columns 1 through 5
0.8147 0.9058 0.1270 0.9134 0.6324
Columns 6 through 10
0.0975 0.2785 0.5469 0.9575 0.9649
B =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9