2016-04-27 15 views
0

ich so etwas wie dies tun wollen:Matlab: evaluate eine symbolische Funktion mit Vektor- und Matrix-Argumente

syms x1 x2 h11 h12 h21 h22 
x = [x1 x2] 
matrix = [h11 h12; h21 h22] 

Und dann meine Funktion erstellen, wie:

f(x, matrix) = ((2*matrix)^(-1/2))*(x'); 

Aber ich muss etwas falsch tun weil ich:

Fehler Argumente sym/cat> checkDimensions (Linie 75) CAT Dimensionen verwenden, sind keine t konsistent.

Fehler in sym/cat> catMany (Zeile 38) [resz, Bereiche] = checkDimensions (sz, dim);

Fehler in sym/cat (Zeile 27) ySym = catMany (dim, strs);

Fehler in sym/horzcat (Zeile 19) ySym = cat (2, args {:});

Fehler in sym/subsasgn (Zeile 1639) C = symfun (B, [inds {:}]);

Antwort

0

Der Fehler ist in Ihrer Funktionsdefinition. Sehen Sie link für wie eine Funktion in MATLAB ordnungsgemäß deklariert wird.

x = [x1 x2]; 
matrix = [h11 h12; h21 h22]; 
your_function_name(x, matrix); 

Oder Sie können eine anonymous Funktion:

in einer separaten Datei "your_function_name.m"

function result = your_function_name(x, matrix) 
result = ((2*matrix)^(-1/2))*(x'); 

Dann können Sie Ihre Funktion wie folgt Setzen Sie diese Namen nennen.

x = [x1 x2]; 
matrix = [h11 h12; h21 h22]; 
f = @(x, m) ((2*m)^(-1/2))*(x'); 
f(x, matrix); 
Verwandte Themen