2012-01-03 75 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;