嘿,有点麻烦.尝试将可变长度1d数组分配给数组的不同值,例如
a(1) = [1, 0.13,0.52,0.3];
a(2) = [1, 0, .268];
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误:
??? 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];
Run Code Online (Sandbox Code Playgroud)
我认为这意味着它期望标量值而不是数组.有人知道如何将数组赋值给这个值吗?
我宁愿不直接将它定义为2d数组,因为它正在为循环中的不同问题做出解决方案
编辑:知道了!
a(1,1:4)= [1,0.13,0.52,0.3];
a(2,1:3)= [1,0,.268];
Jon*_*nas 15
你可能想写的是
a(1,:) = [1, 0.13,0.52,0.3];
a(2,:) = [1, 0, .268];
Run Code Online (Sandbox Code Playgroud)
即第一行是[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];
Run Code Online (Sandbox Code Playgroud)
(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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20504 次 |
| 最近记录: |