Мне нужна помощь для ускорения этой функции, которую я создал для удаления элементов NaN в массиве ячеек.MATLAB - Удалить элементы NaN в массиве ячеек. Помогите ускорить функцию
Чтобы лучше объяснить мою функцию с примером. Предположим, у нас есть массив ячеек, у меня есть массив ячеек в форме indx{ii}
, где каждый ii
представляет собой массив размером 1xNii
(это означает, что массивы имеют разный размер) с элементами NaN
.
datawithNaN{1}=[1,4,8,6];
datawithNaN{2}=[4,6,2];
datawithNaN{3}=[9,8,NaN];
datawithNaN{4}=[3,NaN,NaN];
datawithNaN{5}=[NaN,NaN,NaN,NaN];
Что я хочу, чтобы функция функции выполняла удаление всех элементов NaN в массиве ячеек. Таким образом, ответ на пример должен быть:
datawithoutNaN{1}=[1,4,8,6];
datawithoutNaN{2}=[4,6,2];
datawithoutNaN{3}=[9,8];
datawithoutNaN{4}=[3];
datawithoutNaN{5}=[];
До сих пор я написал функцию, которая дает мне результат я хочу, но это занимает слишком много времени, особенно при работе с большими массивами ячеек или большими массивами внутри массива ячеек , Моя функция:
function result = rmNaN(datawithNaN)
[row_cell, col_cell] = size(datawithNaN);
result = cell(row_cell, col_cell);
for i=1:row_cell
for j=1:col_cell
[row,col]=size(datawithNaN{i,j});
if col>row
datawithNaN{i,j}=datawithNaN{i,j}';
[row,~]=size(datawithNaN{i,j});
end
for k=1:row
if ~isnan(datawithNaN{i,j}(k))
result{i,j}(k) = datawithNaN{i,j}(k);
else
continue
end
end
end
end
Я пробовал, и он отлично работает! И проще, чем я написал! Благодаря :). –