2014-09-18 62 views
1

以下是我有:如何返回数组矩阵指数在MATLAB

coluna = zeros(2,3); 
coluna(1) = func(3,2,1); 
coluna(2) = func(3,4,5); 

这里是例子功能:

function vec = func(a,b,c) 
    vec = zeros(3,1); 
    vec(1,1) = a*b*c; 
    vec(2,1) = a+b+c; 
    vec(3,1) = a-b-c; 
end 

这只是一个例子代码,但它说明了我所说的问题的几乎所有内容。

在C++可以说,这将是这样的:

int *func(int a,int b,int c){ 
    int vet[2]; 
    vet[0]=a*b*c; 
    vet[1]=a+b+c; 
    vet[2]=a-b-c; 
    return vet; 
} 

int main(){ 
    int mat[1][2]; 
    mat[0]=func(3,2,1); 
    mat[1]=func(3,4,5); 
} 

在MATLAB它会给我这个错误:

In an assignment A(I) = B, the number of elements in B and I must be the same.

我怎么可能解决这一问题?

回答

1

发生这种情况的原因是因为你这样做:

coluna(1) = ... 

当你要分配阵列的行,你需要这样做:

coluna(1, :) = ... 

同样为列:

coluna(:, 1) = ... 

然后,你需要确保从func回报率的大小与相同的东西你正在替换。

在你的榜样

所以,这是分配从func输出正确的方法:

coluna = zeros(2,3); 
coluna(1, :) = func(3,2,1); 
coluna(2, :) = func(3,4,5);