请问如何批量提取matlab矩阵中的元素并作为另一个矩阵的坐标?

如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?谢谢。... 如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?谢谢。 展开
 我来答
tianxiawulang
推荐于2016-01-31 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2611万
展开全部

建议楼上的回答之前自己试一试,以免误人误己。

 

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

示例(为了与其它元素区别,赋值用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))
百度网友7d7ebc3
2013-08-10 · TA获得超过531个赞
知道小有建树答主
回答量:630
采纳率:50%
帮助的人:602万
展开全部
B(A(:,1),A(:,2))=1;
%上叙代码可以实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式