这就是我所拥有的:
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中的元素数必须相同。
我该如何解决这个问题?
答案 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);