回覆列表
-
1 # 影片好笑
-
2 # pzyyo24296
首先一點要說明的是,在matlab中,矩陣中的元素序號是按照“先行後列”的順序排列的。設如下隨機矩陣:A=rand(4,6)A =0.6551 0.9597 0.7513 0.8909 0.1493 0.81430.1626 0.3404 0.2551 0.9593 0.2575 0.24350.1190 0.5853 0.5060 0.5472 0.8407 0.92930.4984 0.2238 0.6991 0.1386 0.2543 0.3500則執行下面命令:A(6)ans =0.3404得到結果很容易看出是按照“先行後列”的排序。其次,對於矩陣中的元素表示方法,主要分以下幾點:1.A(m,n)代表矩陣A中第m行,第n列的值:A(3,4)ans =0.54722.對於矩陣A(m,n)若是m用:代替即A(:,n)代表第n列的元素;若是n用:代替即A(m,:)代表第m行元素;A(2,:)ans =0.1626 0.3404 0.2551 0.9593 0.2575 0.2435若是用[a b c]代替m即A([a b c],n)則表示第a,b,c行,n列中的元素;A(:,6)ans =0.81430.24350.92930.3500若是用[a:b](a
如果要提取矩陣元素,我能想出來的有三種方法,但如果要改變這些位置元素的值,我能想出來的只有一種方法。示例(為了與其它元素區別,賦值用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 1523 5 7 14 164 6 13 20 22>> [r,c] = find(B>20);>> A = [r c]A =2 11 23 5>> B((A(:,2)-1)*size(B,1)+A(:,1)) = NaNB =17 NaN 1 8 15NaN 5 7 14 164 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))