请问如何批量提取matlab矩阵中的元素并作为另一个矩阵的坐标?
如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?谢谢。...
如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?谢谢。
展开
展开全部
建议楼上的回答之前自己试一试,以免误人误己。
如果要提取矩阵元素,我能想出来的有三种方法,但如果要改变这些位置元素的值,我能想出来的只有一种方法。
示例(为了与其它元素区别,赋值用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))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询