この機能を高速化するために助けが必要です。セル配列内の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}=[];
これまでのところ、私は私が望む結果を与えるが、セル配列内の大きなセル配列または大きな配列を扱う際には、特別に時間がかかりすぎる機能を書かれています。 My機能は次のとおりです。
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
私はそれを試して、完璧に動作します!私が書いたものより簡単です!ありがとう:) –