使用索引向量更改矩阵值

透特

我有以下数组:

AA = zeros(5,3);
AA(1,3)=1;
AA(3,3)=1;
AA(4,2)=1;

我想将值1放置在以下向量定义的列中a = [0; 2; 0; 0; 1]此向量的每个值均指我们要在每一行中更改的列索引。当零个豌豆时,不应进行任何更改。

所需的输出:

0     0     1
0     1     0
0     0     1
0     1     0
1     0     0

您能否建议一种无需for循环的方法?目标是更快的执行速度。

谢谢!!!

迪卡卡(Divakar)

方法1

nrows = size(AA,1) %// Get the no. of rows, as we would use this parameter later on

%// Calculate the linear indices with `a` as the column indices and 
%// [1:nrows] as the row indices
idx = (a-1)*nrows+[1:nrows]'  %//' 

%// Select the valid linear indices (ones that have the corresponding a as non-zeros
%// and use them to index into AA and set those as 1's
AA(idx(a~=0))=1

给定的代码输出AA-

>> AA
AA =
     0     0     1
     0     1     0
     0     0     1
     0     1     0
     1     0     0

方法2

AA(sub2ind(size(AA),find(a~=0),a(a~=0)))=1

将其分解为几个步骤以进行解释:

  • find(a~=0)a(a~=0)根据sub2ind(size(),row,column)格式需要分别获取VALID行索引和列索引

  • sub2ind向我们获取线性索引,我们可以使用它来索引输入矩阵AA并将其设置AA1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过索引向量更改多个矩阵元素

来自分类Dev

如何不使用for循环而参考列索引向量更改矩阵的元素?

来自分类Dev

根据索引向量替换矩阵列中的值?

来自分类Dev

在MATLAB中根据索引向量的值拆分矩阵

来自分类Dev

如何使用n个索引向量访问nD矩阵?

来自分类Dev

如何使用索引向量从矩阵中提取元素?

来自分类Dev

如何使用索引向量从矩阵中提取元素?

来自分类Dev

R:从具有x和y索引向量的矩阵或数据框中选择值的向量

来自分类Dev

根据行和列索引向量分配新的矩阵值

来自分类Dev

R中按值的索引向量

来自分类Dev

R中按值的索引向量

来自分类Dev

R:使用索引向量访问2D矩阵的元素

来自分类Dev

带向量的R索引矩阵/从索引向量创建索引矩阵

来自分类Dev

将向量中的值替换为索引向量

来自分类Dev

Matlab:索引向量值等于固定值

来自分类Dev

根据列索引向量选择data.table值

来自分类Dev

使用索引向量访问R中的n维数组

来自分类Dev

使用列和行索引向量化函数

来自分类Dev

Matlab:索引向量的正确方法;索引时间序列的矩阵维度错误

来自分类Dev

创建排序向量的索引向量

来自分类Dev

按索引向量对犰狳矩阵所有列进行排序的最佳方法

来自分类Dev

使用索引向量从另一个向量生成向量

来自分类Dev

使用索引向量从另一个向量生成向量

来自分类Dev

向量化代码的性能,以创建索引向量每行只有一个1的稀疏矩阵

来自分类Dev

如何用值向量填充索引矩阵

来自分类Dev

通过R中的数组索引向量

来自分类Dev

在R中,如何读取索引向量?

来自分类Dev

用级别替换索引向量

来自分类Dev

通过R中的数组索引向量

Related 相关文章

热门标签

归档