嘿,有点麻烦。尝试将可变长度的1d数组分配给数组的不同值,例如
a(1) = [1, 0.13,0.52,0.3]; a(2) = [1, 0, .268]; 但是,我得到了错误:
??? In an assignment A(I) = B, the number of elements in B and I must be the same. Error in ==> lab2 at 15 a(1) = [1, 0.13,0.52,0.3]; 我认为这意味着它期望的是标量值而不是数组。有人知道如何将数组分配给该值吗?
我宁愿不直接将其定义为2d数组,因为它是在循环中解决不同问题的方法
编辑:知道了!
a(1,1:4)= [1,0.13,0.52,0.3];
a(2,1:3)= [1,0,.268];
回答:
你可能想写的是
a(1,:) = [1, 0.13,0.52,0.3]; a(2,:) = [1, 0, .268]; 也就是说,第一行是[1, 0.13,0.52,0.3] ,第二行是[1, 0, .268] 。这是不可能的,因为a(2,4)的值是多少?
有两种方法可以解决此问题。
(1)使用单元格数组
a{1} = [1, 0.13,0.52,0.3]; a{2} = [1, 0, .268]; (2)如果您知道解决方案将具有的最大列数,则可以预分配数组,并像这样写入结果(如果不进行预分配,则填充为零。您也可能会减慢速度如果有很多迭代,那么循环就很多了,因为每次迭代都必须重新创建数组。
a = NaN(nIterations,maxNumCols); %# this fills the array with not-a-numbers tmp = [1, 0.13,0.52,0.3]; a(1,1:length(tmp)) = tmp; tmp = [1, 0, .268]; a(2,1:length(tmp)) = tmp;
更多&回答...