Как удалить диапазон строк из массива ячеек, используя cellfun, matlab - PullRequest
0 голосов
/ 14 марта 2020

У меня есть ячейка 1x3 с

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 для этого?

1 Ответ

0 голосов
/ 15 марта 2020

Сначала необходимо написать функцию, которая правильно обрабатывает одну ячейку, затем использовать 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);
...