Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
嘿,有点麻烦。尝试将可变长度的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; 更多&回答... |
![]() |
![]() |