matlab - 根据给定位置选择矩阵条目
问题描述
我有以下矩阵(MxN,其中 M ≤ N):
0.8147 0.9134 0.2785 0.9649
0.9058 0.6324 0.5469 0.1576
0.1270 0.0975 0.9575 0.9706
从每一行中,我想分别选择以下列条目(每行一个):
idx = [ 3 1 4 ];
这意味着我们将元素保留在 (1,3)、(2,1) 和 (3,4) 中,而数组的其余部分应该为零。
对于上面的示例,我将得到以下输出:
0 0 0.2785 0
0.9058 0 0 0
0 0 0 0.9706
我目前使用循环生成它,当矩阵大小较大时,它会变慢。
任何人都可以提出更高效的方法吗?
解决方案
您可以使用sub2ind
函数将条目索引转换为线性索引。
使用线性索引时,matlab 将矩阵视为长列向量。
org_mat=[0.8147 0.9134 0.2785 0.9649
0.9058 0.6324 0.5469 0.1576
0.1270 0.0975 0.9575 0.9706];
entries=[3,1,4];
linear_entries=sub2ind(size(org_mat),1:length(entries),entries);
new_mat=zeros(size(org_mat));
new_mat(linear_entries)=org_mat(linear_entries);
推荐阅读
- python-3.x - 比较数据框python中具有相同列的不同行
- typescript - 为什么这个打字稿方法返回null?
- r - 在 data.table 中包含迭代循环的矢量化函数
- scala - 如何在 Scala 中将 CSV 列读入向量
- java - AndroidStudio retrofit2 响应获取数据
- web-scraping - 用于抓取该网站的 xpath 代码是什么?
- node.js - 我想查找从一个位置到另一个位置的距离并找到最近的位置
- windows - 如何获得窗口的航空捕捉状态?
- database - 如何从 dynamodb shell 解决 dynamodb 网络错误?
- css - ) 预期 css(css-rparentexpected)" 用于 @media 查询中的第 4 级 css 语法