如何使用cellfun,matlab从单元格数组中删除一系列行

如何使用cellfun,matlab从单元格数组中删除一系列行,matlab,cell,delete-row,Matlab,Cell,Delete Row,我有一个1×3的手机 timepositionrawdata = {time, lat, lon}; % Extract every fourth instance of the raw data time = timepositionrawdata{1,1}(1:4:end); lat = timepositionrawdata{1,2}(1:4:end); lon = timepositionrawdata{1,3}(1:4:end); timepositionrawdata = {time

我有一个1×3的手机

timepositionrawdata = {time, lat, lon};
% Extract every fourth instance of the raw data
time = timepositionrawdata{1,1}(1:4:end);
lat = timepositionrawdata{1,2}(1:4:end);
lon = timepositionrawdata{1,3}(1:4:end);
timepositionrawdata = {time, lat, lon};

% Delete and add appropriate rows to match image sequence times
timepositionrawdata{1}(278,:) = [];
timepositionrawdata{2}(278,:) = [];
timepositionrawdata{3}(278,:) = [];

timepositionrawdata = timepositionrawdata{1}([1:281, 281:end],:);
timepositionrawdata = timepositionrawdata{2}([1:281, 281:end],:);
timepositionrawdata = timepositionrawdata{3}([1:281, 281:end],:);

我希望能够删除整个单元格中的特定行。如何使用cellfun执行此操作?

您首先需要编写一个正确处理一个单元格的函数,然后使用
cellfun
将其应用于单元格数组

function time = process_one_cell(time)
time = time(1:4:end);
time(278, :) = [];
time = time([1:281, 281:end], :); % I'm not sure why you're doing this, looks kind of pointless. 
end
然后调用函数,如下所示

timepositionrawdata = cellfun(@process_one_cell, timepositionrawdata, 'UniformOutput', 0);
% or if you prefer to be more verbose
timepositionrawdata = cellfun(@(x) process_one_cell(x), timepositionrawdata, 'UniformOutput', 0);

请提供一个样本单元阵列,并解释/说明您希望如何删除数据?时间、纬度和经度是否相同?如果是这样,那么矩阵就是合适的数据结构,它就是一个单元格。时间、lat和lon都是相同的大小。我需要添加或复制一行以匹配来自另一个源的数据的时间序列。我正在将从移动船舶收集的海洋数据与从固定浮标收集的数据进行匹配,同时同步时间。请更明确地说明您要做的事情:给出一个输入/输出示例。我不明白你想从你的描述中得到什么。