2015-06-09 100 views
-1

由於某些原因,我無法制作帶有變量的矩陣。我收到以下消息。如何在矩陣中分配變量?

>>> A= [a b ;(-1-a) (1-b); (1+a) b] 

error: horizontal dimensions mismatch (2x3 vs 1x1) 

爲什麼?如果我錯了,請告訴我正確的方法。

+6

在您的代碼中如何定義a和b?如果我輸入'syms a b',然後粘貼你的命令,它就可以正常工作。 –

+0

@HomegrownTomato哦,是的,謝謝你。可能是因爲我收到錯誤。我沒有定義它們。我只是想用a,b來做一些矩陣計算,所以我有解決方案。但是,如果想要這樣做,例如,如果我想要a和b的解決方案。我該如何去做。謝謝。 –

+1

如果a和b是標量,你的矩陣是矩形的,所以A^2沒有定義。如果定義了它,你只需簡單地給出命令'A^2'來評估。 –

回答

1

在Matlab中首先需要指定一個變量,然後才能使用它,

a = 1; 
b = a+1; 

這將因此給出一個錯誤,

clear; 
b = a+1; % ERROR! Undefined function or variable 'a 

Matlab的也永遠不會接受未分配的變量。這是因爲,在最低級別上,您沒有a。你將會得到機器碼,其編號爲a。這是由Matlab中的JIT編譯器處理的,所以你不需要擔心這一點。

如果你想使用變量你有數學,你可以具體表達這個matlab。該對象被稱爲定義symX到可變xsym和語法,

syms x; 

這就是說,可以定義一個向量或矩陣,

syms a b x y; % Assign the syms 
A = [x y]; % Vector 
B = A= [a b ;(-1-a) (1-b); (1+a) b]; % Matrix. 

的矩陣的大小可以通過size(M)或調暗找到。當且僅當M1有大小m * n個M2有大小ñ* P可以calcuate矩陣乘積M3 = M1 * M2。然後M3的尺寸將爲m * p。這也意味着操作A^N = A * A * ...僅當m = n時才被允許,因此矩陣是正方形的。這可以通過比較在matlab中驗證,

syms a b 
A = [a,1;56,b] 
if size(A,1) == size(A,2) 
    disp(['A is a square matrix of size ', num2str(size(A,1)]); 
else 
    disp('A is not square'); 
end 

這些是在Matlab中指定變量以及矩陣乘法的基本規則。此外,谷歌搜索錯誤錯誤:'x'undefined只會給我八度命中。你使用八度嗎?在這種情況下,我無法保證您可以使用sym對象或者語法正確。

+0

是的,我使用八度。你怎麼知道的? –

+0

@lochana我做了一個谷歌搜索的錯誤消息。我從來沒有使用八度,我沒有從Matlab識別錯誤。但是,如果我的答案不起作用,您應該爲該問題添加一個八度標記,並添加一個評論,指出這不適用於八度。 – patrik

+0

@patrik這適用於Octave。問題是用戶如何定義'a'和'b'(我猜他們不是標量的) – carandraug