2015-06-16 57 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