将任意大小的单元格或数组分成定义大小的片段
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]);
我有一个坐标数据列表,我正试图将其分成小到足以发送到微控制器的部分。
目前我有一个看起来像这样的相当大的数据单元格:
[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]);