让我说我有一个功能:
function [ A, B, C ] = test(x, y, z)
A=2*x;
B=2*y;
C=2*z;
end当您按run时,Matlab只返回输出参数的第一个值--在本例中是[A]。是否有一个命令可以在函数中自动返回所有函数输出参数[A,B,C],而不是仅仅返回第一个参数。我知道我可以输入命令windows [ A, B, C ] = test(x, y, z)并获取所有的值,但有时我很懒,只想按Run并自动获取所有的值。
发布于 2014-02-18 15:26:36
一些备选方案:
添加一个参数来指定详细输出控制台,但默认情况下将其设置为false:
function [ A, B, C ] = test(x, y, z, verbose)
if nargin = 3
verbose = false;
end;
A=2*x;
B=2*y;
C=2*z;
if verbose
fprintf('A = %f\nB = %f\nC = %f', A, B, C);
end;
end或者将它们合并成一个输出:
function output = test(x, y, z)
A=2*x;
B=2*y;
C=2*z;
output = [A, B, C]; %// Or {A;B;C} if they're not going to be the same size, but then it won't display anyway
end或者,如果您真的想要这样做,我想您可以编写一个包装器函数,您可以在函数上调用它,它会为您显示所有三个函数,您可以在任何函数上通用。但这似乎不值得。
发布于 2014-03-04 15:56:24
另一个选项是使用assignin自动将输出参数保存到工作区。
function [ A, B, C ] = test(x, y, z)
A=2*x;
B=2*y;
C=2*z;
assignin('base', 'A', A);
assignin('base', 'B', B);
assignin('base', 'C', C);
end“‘base”是从命令窗口调用变量时使用的主工作区的名称。
通过这种方式,您可以在不使用test(x,y,z)部件的情况下在工作区中键入[A,B,C] =,并且它仍然会给出所有的值。
与将A、B和C组合为一个输出相比,这样做的好处是仍然有3个独立的变量保存在工作区中。如果A、B和C是数组或单元格,这是有用的。这种方法的一个缺点是,如果在另一个函数中使用这个函数,它仍然只使用A的值,例如:length(test(x,y,z))只给出A的长度。
发布于 2015-01-22 08:23:56
Matlab函数输出采用单元格格式,因此可以定义大小与函数输出相同的单元数据,并将其作为一个单一变量以更结构化的方式存储所有输出:)
a = cell{3, 1};
[a{:}] = test(x, y, z);
A = a{1};
B = a{2};
C = a{3}; https://stackoverflow.com/questions/21857967
复制相似问题