在MATLAB中怎样获得矩阵中元素的坐标

如题所述

如果要提取矩阵元素,我能想出来的有三种方法,但如果要改变这些位置元素的值,我能想出来的只有一种方法。

示例(为了与其它元素区别,赋值用NaN):
% 生成测试数据B = magic(5);
B = B(1:3, :)
[r,c] = find(B>20);
A = [r c]

% 将B中以A作为下标的元素置为NaN
B((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)) = NaN
B =
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))
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-22
x=[1 2 3;4 5 6;7 8 9]
[i,j]=find(x==7)

x =

1 2 3
4 5 6
7 8 9

i =

3

j =

1本回答被网友采纳
相似回答