matlab - 矩阵运算难度

标签 matlab vector matrix matrix-multiplication

我在将向量推回矩阵时遇到问题。考虑到 N×N 矩阵称为 MyMatrix,其中 N = 10,它由零和非零元素组成,对角线元素全为零。有 2 个向量:维度为 15 的 Positive_Vector,由从 MyMatrix 提取的 10 个非零元素组成,以及由 N< 组成的 ConceptsVector/code> 元素分别。假设向量由以下元素组成 Positive_Vector = [MyMatrix(1,2)、MyMatrix(1,6)、MyMatrix(2,5)、MyMatrix(2,6)、MyMatrix(2,10)、MyMatrix(3,1)、MyMatrix( 4,10)、MyMatrix(5,3)、MyMatrix(5,9)、MyMatrix(6,1)、MyMatrix(6,7)、MyMatrix(7,3)、MyMatrix(7,4)、MyMatrix(8 ,1),MyMatrix(8,3)];

Concepts = [0.6,0.1,0.0,0.2,0.8,0.33,0.21,0.5,0.11];

我的问题是如何使用由相同维度但不同元素值组成的新向量New_Positive_vector更新MyMatrix,以便以下操作

C1  = Concepts*NewMyMatrix

可以执行吗?

这就是我提取Positive_Vector的方法。有人可以演示如何执行相反的操作,即将 New_Positive_Vector 的新元素推回 NewMyMatrix 中的相应位置吗?

for ii = 1:10
 for jj = 1:10
  if (MyMatrix(ii,jj)~=0)
    Positive_Vector = MyMatrix(ii,jj);
  end
 end
end

最佳答案

你的解释很模糊,但我假设你想从矩阵中提取非零(或正)元素,在这些元素中进行一些操作,然后将它们推回到原始矩阵中。那么我建议,

MyMatrix = (rand(5)>0.5).*rand(5);

[n,m,Positive_vector] = find(MyMatrix);
k = sub2ind(size(MyMatrix),n,m);

MyMatrix(k) = Positive_vector*2;

第一行用于生成带有一些零的随机矩阵。第二行是找到矩阵的非零元素。如果你只想要正数,那么你可以将其修改为find(MyMatrix > 0)。这里,n和m是非零元素的行号和列号的集合,但我在第三行将其变成一维索引。第四行是对提取的向量应用一些运算(本例中乘以 2)并将其推回到原始矩阵中的原始位置。

我假设您执行的操作比将非零元素乘以 2 更复杂。否则您可以执行类似的操作...

 MyMatrix = MyMatrix - (MyMatrix>0).*MyMatrix + (MyMatrix>0).*(MyMatrix)*2

关于matlab - 矩阵运算难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22316362/

相关文章:

matlab - 训练和测试阶段应该有多少张图像?库支持向量机

c++ - 如何在 C++ 中使用插入符号 "^"进行求幂

c++ - 索引 vector C++

algorithm - 在大矩阵内移动正方形,找到重叠的最小数字

复数矩阵的 R 图

java - 从java调用matlab函数

string - 如何在Matlab中将字符串变量转换为 boolean 值?

c++ - 用 C++ 重写 grep

c++ - 如何将 auto_ptr 添加到 vector

c - 布拉斯 : Matrix product in C?