我有一個 3D 矩陣xyposframe,我想洗掉該矩陣中第一列的數字低于150或高于的所有行326。我嘗試了以下方法,但這并沒有給我想要的結果:
indexbelow = xyposframe(:, 1) < 150;
indexabove = xyposframe(:, 1) > 326;
xyposframe(indexbelow, :) = [];
xyposframe(indexabove, :) = [];
如何洗掉這些行?
uj5u.com熱心網友回復:
問題是indexbelow和indexabove的大小都是 n × 1,即列向量的元素數量與 中的行數一樣多xyposframe。隨著您洗掉許多xyposframe(indexbelow, :) = [];行,從而使行數xyposframe少于行n,當您嘗試呼叫時會導致錯誤xyposframe(indexabove, :) = [];,因為您嘗試索引少于n總n索引的元素。
可能的解決方案是將操作拆分為兩部分,或者將它們組合在一個邏輯陳述句中:
% First one, then the other
indexbelow = xyposframe(:, 1) < 150;
xyposframe(indexbelow, :) = [];
indexabove = xyposframe(:, 1) > 326;
xyposframe(indexabove, :) = [];
% Combine using logical AND
indexbelow = xyposframe(:, 1) < 150;
indexabove = xyposframe(:, 1) > 326;
xyposframe(indexbelow & indexabove, :) = [];
% Or put everything in a single indexing line using logical OR
xyposframe(xyposframe(:,1)<150 | xyposframe(:,1) > 326) = [];
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426537.html
