将任意大小的单元格或数组分成定义大小的片段

Divide cell or array of arbitrary size into pieces of defined size

我有一个坐标数据列表,我正试图将其分成小到足以发送到微控制器的部分。

目前我有一个看起来像这样的相当大的数据单元格:

    [46.06,32.98]
    [15.66,78,42]

等等

我需要对值进行舍入,因此我将其转换为带有 cell2mat 的矩阵并使用 round 函数。然后看起来像这样有两个列:

    46 32
    15 78

等等

MATLAB 在变量 window 中将其称为 (nx2) double,n 是所有坐标对。

我想将这个双数组拆分为五行坐标的部分,因为我的 Arduino 一次只能处理这么多数据。坐标对的数量往往不是5的倍数,所以我需要用null填充其余部分。

我还有剩下的。

    Centroid = {blobSelects.Centroid}.'; %where I create the coordinate cell
    raws = cell2mat(Centroid); %I create the nx2 double
    cleans = round(raws); %I round the values

    %Here I write it to a table
    T = cell2table(cleans,'VariableNames',{'X','Y'}); 

    % and save it on a microSD card.
    dlmwrite('E:\data.txt', 'tabledata.txt', 'delimiter', '\t')    

试试这个:

A = randi([0, 100],randi(50),2); %// replace with your actual matrix
padSize = ceil(size(A,1)/5)*5 - size(A,1);
A = vertcat(A,nan(padSize,2));

out1 = mat2cell(A,ones(1,size(A,1)/5)*5,2); %// Desired cell array

如果你想要它作为 3D 矩阵(因为它们都是相同大小的 5x2),你可以使用

out = permute(reshape(A,5,size(A,1)/5,[]),[1 3 2]);