代码如下。
a=0;
>> b=[4 0];
>> a([2,1])=b
答案是:
a=[0 4].
我的问题是:为什么我们在进行分配时可以改变矩阵a的大小(因为a的原始大小是1乘1,现在a的大小是1乘2)?非常感谢您的时间和关注。
答案 0 :(得分:0)
当你最初分配一个单个数字(1乘1)时,试图访问索引a([2,1])应该得到索引超过矩阵维度,因为a是1乘1. Matlab的方式但是,处理问题的方法是,当你重新分配b等于a的某个索引时,分配该索引并且a的结构也会改变。只要数据适合,您就可以执行(:,1)= b或任何其他索引。
如果
b = [0 4; 4 0];
这是一个二维数据,你将无法做([2,1])= b,因为分配的索引是1维。但是,您可以通过执行以下操作为b分配2维索引:
a(:,:,1)=b