如何在MATLAB中将数组存入同一数据结构的不同大小分箱?
解决MATLAB中不同长度分箱的存储问题
这个问题我太熟悉了!MATLAB里的普通数值矩阵要求每一列的元素个数必须完全一致,所以你直接尝试用bin(:,3)赋值34个元素时,肯定会因为维度不匹配报错——毕竟前两列只有33个元素,矩阵结构不允许这种“参差不齐”的情况。
不过不用慌,我们可以用cell数组来解决这个问题,它专门用来存储不同维度、甚至不同类型的数据,完全符合你不想用额外变量的需求,具体操作如下:
x = 1:100; % 初始化cell数组,直接赋值每个分箱的元素 bin{1} = x(1:33); bin{2} = x(34:66); bin{3} = x(67:100);
这样操作后:
bin{1}就是你要的第一分箱(33个元素)bin{2}是第二分箱(33个元素)bin{3}是第三分箱(34个元素)
如果你想快速查看每个分箱的元素个数,可以用这个命令:
cellfun(@length, bin)
执行后会返回 [33, 33, 34],完美符合你的分箱要求。
要是你更喜欢用带命名的结构,也可以用MATLAB的结构体:
bin.box1 = x(1:33); bin.box2 = x(34:66); bin.box3 = x(67:100);
访问时就用bin.box3来获取最后34个元素,但对于这种按序号分的场景,cell数组会更简洁直观。
内容的提问来源于stack exchange,提问作者user1068636
相关产品推荐
相关产品推荐

