我想索引的一部分矩陣使用邏輯掩碼。因此,作爲一個輸入,我有一個矩陣A,其中有一些nan
值,我創建一個mask
爲此使用isnan
。此外,我有一個矢量v
的值,我想插入到A A(mask)=v
。然後我使用A B=[A;A;A]
構造另一個矩陣B.現在我想將v
中的值應用於B
中的正確位置。如何在Matlab中創建temp=B(1:size(A,1),1:size(A,2))
矩陣或創建新的mask=[mask;false(2*size(A,1),size(A,2))]
?矩陣塊索引加蒙版在matlab中
再來一次:
A = rand(2,10);
v = A(A>0.5);
A(A>0.5) = nan;
mask = isnan(A);
B=[A;A;A];
% now how to write v to B?
% not doing one of those:
tmp = B(1:2,:);
tmp(mask) = v;
B(1:2,:) = tmp;
%...
mask1 = [mask;false(4,10)]
mask2 = [false(2,10);mask;false(2,10)]
mask3 = [false(4,10);mask]
B(mask1) = v;
B(mask2) = v;
B(mask3) = v;
% what i miss is something like B(1:2,:)(mask)
謝謝你,你的回答有助於解決我的問題,或者至少它給了我一個很好的發展方向。我的問題是性能。 'B'是一個大矩陣,寫入操作'B(掩碼)= v'經常進行。而且'B'就是這樣的類似'B = [A(:,4:end); A(:,3:end-1); A(:,2:end-2)]''。 – Dimitri