如何在matlab中将数组拆分为同一数据结构中不同大小的bin



假设我在MATLAB中定义了以下数组:

x = 1:100;

我想形成一个单一的数据结构"bin"如下所示:

bin(:,1) = x(1:33);  % copy 33 elements into 1st bin
bin(:,2) = x(34:66); % copy another 33 elements into 2nd bin
bin(:,3) = x(67:100);% copy remaining 34 elements into 3rd bin

然而,matlab不允许将最后34个元素添加到bin(:,3(中,因为前两个元素的大小为33。我宁愿不使用不同的变量来存储最后34个元素。MATLAB中有没有办法绕过这一点(即,我如何使用相同的数据结构"bin"将所有100个元素存储在不同大小的3列中?(

对于这样的问题,存在单元格s。它们就像其他语言中的指针一样工作:区分其地址和内容。因此,您可以在访问其内容(可能具有不同大小或类型(时查看地址(彼此相邻(

bin = cell(1,3); % allocating the cell. not necessary but good practice
bin{1} = x(1:33);  % copy 33 elements into 1st bin
bin{2} = x(34:66); % copy another 33 elements into 2nd bin
bin{3} = x(67:100);% copy remaining 34 elements into 3rd bin

使用大括号{ }进行索引将为您提供单元格的内容,而( )为您提供该单元格的元素(显然是一个单元格(。它的工作原理类似于对其他变量类型的切片。请注意,将完整的数组放入单元格的单个元素中bin{1}bin{1,1}将返回1x33数字数组。

单元数组是一种可以容纳任何对象的结构,例如不同长度的数组。mat2cell允许您将阵列拆分为多个阵列的单元。

bin=mat2cell(x,[33,33,34])

相关内容

  • 没有找到相关文章

最新更新