2012-01-03 93 views
0

我想寫一個Matlab代碼,給定一個矩陣,輸出3個矩陣(根據一些規則)。我很難得到這個工作 - 雖然我不能輸出一個帶有矩陣的向量作爲條目。我收到錯誤信息:輸出幾個矩陣的Matlab代碼

???在賦值A(I)= B中,B和I 中的元素數量必須相同。

我該如何去做這件事?

+0

,請告訴我們(的相關部分)的代碼你」已經得到了 – BioGeek 2012-01-03 13:30:40

回答

4

你可以寫

function [A B C] = myFunction(X) 
    A = X; 
    B = 2 * X; 
    C = 3 * X; 
end 

[a b c] = myFunction(ones(2)) 

調用它。如果你不希望所有的輸出,只是

a = myFunction(ones(2)) 

叫它
[a b] = myFunction(ones(2)) 

只能得到第一個參數,或者只是前兩個參數。

+0

謝謝。是否有可能適應這種情況,以便矩陣輸出的數量可以是任何可達3的值? – 2012-01-03 13:38:49

+0

是的(看我的編輯) – 2012-01-03 13:39:53

+0

謝謝。我意識到我應該更具體一些:有時myFunction將輸出1個矩陣,有時2個,有時3個(取決於輸入矩陣)。我想在我正在編寫的另一個函數內調用myFunction,然後使用由MyFunction輸出的矩陣。我事先不知道myFunction會給我多少個參數。我怎樣才能解決這個問題? – 2012-01-03 13:56:38

0

函數聲明:

function [A, B, C] = something (Input_mat) 
%Do whatever needs to be done here, for example: 
A= Input_mat; 
B= Input_mat'; 
C= ones(18); 

然後當你調用它使用:

[A,B,C] = something (Some_mat) 

A,B和C被填充。

1

您還可以使用細胞:

A=cell(1,3); %% or A=cell(1,2); if you want to output only 2 matrices 
A{1}=B; 
A{2}=C; 
A{3}=D; 

如果你的矩陣都具有相同的大小,你也可以將它們連接起來:

A=zeros(m,n,3); 
A(:,:,1)=B; 
A(:,:,2)=C; 
A(:,:,3)=D;