已知數組中起始元素和結束元素的位置及值,需將這兩個位置之間的所有元素提取到新矩陣中。
MATLAB 支持強大的索引操作,直接使用冒號運算符實現範圍提取:
% 假設原數組
A = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
% 已知起始位置 3 (值 30),結束位置 7 (值 70)
startIdx = 3;
endIdx = 7;
% 提取子數組(包含邊界)
B = A(startIdx:endIdx);
% 結果: B = [30, 40, 50, 60, 70]
valStart = 30;
valEnd = 70;
startIdx = find(A == valStart, 1, 'first');
endIdx = find(A == valEnd, 1, 'last');
if ~isempty(startIdx) && ~isempty(endIdx)
B = A(startIdx:endIdx);
end
M = magic(5); % 5x5 矩陣
% 提取第 2 到 4 行,第 1 到 3 列
subM = M(2:4, 1:3);
% 提取大於 30 且小於 70 的元素
B = A(A > 30 & A < 70);
sub2ind/ind2sub 進行線性/下標索引轉換numel(A)find 可能返回空數組,需判斷 isempty