サイズ 1*n ( X=cell(1, n)
) のセル配列があります。このセル配列 (X) 内のすべてのセルのサイズは異なります。したがって、明確にするために、ここに例を示します。
X = {X1, X2, X3} (n=3)
X1 = [1 3 5 9]
X2 = [1 2 3 6 7]
X3 = [1 7 8 9]
長さ m のベクトルがあります。例えば:
Y = [0 3 6 9] (m=4)
このベクトルに従って、セル配列内のセルを次のように分割します。
X1-1=[1] (because 1>=Y(1) & 1<Y(2)), X1-2=[3 5] (because 3 and 5>=Y(2) & 1<Y(3)), X1-3=[9] (because 9>=Y(3) & 9<Y(4))
X2 と X3 についても同様です...そして最終的には次のようになります。
Z = {X1-1 X2-1 X3-1
X1-2 X2-2 X3-2
X1-3 X2-3 X3-3}
forループを使用した私のコードは次のとおりです。
Z = cell(size(X,2), size(Y,2));
for i = 1:size(X,2)
T = cell2mat(X(i));
for j = 1:size(Y,2)-1
idx = (T > Y(j) & T < Y(j+1));
Z{i,j} = {T(idx)'};
end
end
Z = cellfun(@(z) cell2mat(z), Z, 'UniformOutput', false);
forループを使わずに同じ結果を得たい。ベクトル化のアイデアはありますか?