2015-06-16 58 views
1

我想在%this does not行上分配向量值函数f的结果,如下所示。有没有办法做到这一点?将向量值函数输出分配给向量

文件scratch.m

function scratch(x) 
get_f(x) 
end 

% vector-valued function of a vector 
function val = f(x) 
val(1) = x(1)^3 + x(2) - 1; 
val(2) = x(2)^3 - x(1) + 1; 
end 

function get_f(x) 
% z = f(x) % this works 
[x1,x2] = f(x); % this does not 
end 

电话与scratch([1,1])

>> scratch([1,1]) 
Error using scratch>f 
Too many output arguments. 

Error in scratch>get_f (line 12) 
[x1,x2] = f(x); 

Error in scratch (line 2) 
get_f(x) 

回答

1

你的函数输出val是一个1x2的阵列,而不是2个个人变量,所以你必须这样称呼它:

arrayX = f(x); 
x1 = arrayX(1); 
x2 = arrayX(2); 

如果你想要2个输出变量,而你需要c焊割函数体内是这样的:

function [y1, y2] = f(x) 
    y1 = x(1)^3 + x(2) - 1; 
    y2 = x(2)^3 - x(1) + 1; 
end 
0

强制转换为单元阵列

function [x1, x2] = Untitled2(x) 
    [x1, x2] = get_f(x); 
end 

% vector-valued function of a vector 
function val = f(x) 
    val(1) = x(1)^3 + x(2) - 1; 
    val(2) = x(2)^3 - x(1) + 1; 
end 

function [x1, x2] = get_f(x) 
    % z = f(x) % this works 
    z = num2cell(f(x)); 
    [x1, x2] = z{:}; 
end