发布网友 发布时间:2022-04-20 14:40
共2个回答
热心网友 时间:2023-10-03 07:04
如果要提取矩阵元素,我能想出来的有三种方法,但如果要改变这些位置元素的值,我能想出来的只有一种方法。
示例(为了与其它元素区别,赋值用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))
热心网友 时间:2023-10-03 07:04
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