如何在matlab中将数组返回到矩阵索引中

时间:2014-09-18 22:45:45

标签: arrays 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中它会给我这个错误:

  

在作业A(I)= B中,B和I中的元素数必须相同。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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);