建議樓上的回答之前自己試一試,以免誤人誤己。
如果要提取矩陣元素,我能想出來的有三種方法,但如果要改變這些位置元素的值,我能想出來的只有一種方法。
示例(為了與其它元素區別,賦值用NaN):
% 生成測試資料B = magic(5);B = B(1:3, :)[r,c] = find(B>20);A = [r c]% 將B中以A作為下標的元素置為NaNB((A(:,2)-1)*size(B,1)+A(:,1)) = NaN
輸出:
>> B = magic(5);>> B = B(1:3, :)B = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22>> [r,c] = find(B>20);>> A = [r c]A = 2 1 1 2 3 5>> B((A(:,2)-1)*size(B,1)+A(:,1)) = NaNB = 17 NaN 1 8 15 NaN 5 7 14 16 4 6 13 20 NaN
附:提取矩陣元素的三種方法:
diag(B(A(:,1),A(:,2)))arrayfun(@(r,c)B(r,c),A(:,1),A(:,2))B((A(:,2)-1)*size(B,1)+A(:,1))
建議樓上的回答之前自己試一試,以免誤人誤己。
如果要提取矩陣元素,我能想出來的有三種方法,但如果要改變這些位置元素的值,我能想出來的只有一種方法。
示例(為了與其它元素區別,賦值用NaN):
% 生成測試資料B = magic(5);B = B(1:3, :)[r,c] = find(B>20);A = [r c]% 將B中以A作為下標的元素置為NaNB((A(:,2)-1)*size(B,1)+A(:,1)) = NaN
輸出:
>> B = magic(5);>> B = B(1:3, :)B = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22>> [r,c] = find(B>20);>> A = [r c]A = 2 1 1 2 3 5>> B((A(:,2)-1)*size(B,1)+A(:,1)) = NaNB = 17 NaN 1 8 15 NaN 5 7 14 16 4 6 13 20 NaN
附:提取矩陣元素的三種方法:
diag(B(A(:,1),A(:,2)))arrayfun(@(r,c)B(r,c),A(:,1),A(:,2))B((A(:,2)-1)*size(B,1)+A(:,1))