可能重复:
如何将矩阵的每一行除以固定行?
我正在寻找一种优雅的方法来从矩阵的每一行中减去相同的向量.这是一种非常优雅的方式.
a = [1 2 3];
b = rand(7,3);
c(:,1) = b(:,1) - a(1);
c(:,2) = b(:,2) - a(2);
c(:,3) = b(:,3) - a(3);
Run Code Online (Sandbox Code Playgroud)
而且,优雅的方式不能比这种方法慢.
我试过了
c = b-repmat(a,size(b,1),1);
Run Code Online (Sandbox Code Playgroud)
而且似乎更慢.
编辑:获胜者是这种方法.
c(:,1) = b(:,1) - a(1);
c(:,2) = b(:,2) - a(2);
c(:,3) = b(:,3) - a(3);
Run Code Online (Sandbox Code Playgroud)
编辑:更多方法和tic toc结果:
n = 1e6;
m = 3;
iter = 100;
a = rand(1,m);
b = rand(n,m);
tic
c = zeros(size(b));
for i = 1:iter
c(:,1) = b(:,1) - a(1);
c(:,2) = …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以将每个矩阵元素除以列总和?例如:
input:
1 4
4 10
output:
1/5 4/14
4/5 10/14
Run Code Online (Sandbox Code Playgroud) 我有M行和4列的矩阵(M1).我有另一个1行和4列的数组(M2).我想通过M2中各自的列元素减去M1中的每个元素.换句话说,M1的每列需要由M2中相同列位置的标量子跟踪.我可以调用repmat(M2,M,1),这会创建一个大小为MxN的新矩阵,其中列中的每个元素都是相同的,然后按元素减法执行元素:
M2new = repmat(M2,M,1)
final = M1 - M2new
Run Code Online (Sandbox Code Playgroud)
但是,这是两行代码并在内存中创建一个新元素.执行此操作的最快且内存最少的方法是什么?
我想将矩阵的每个元素除以元素所属的行的总和.例如:
[1 2 [1/3 2/3
3 4] ==> 3/7 4/7]
Run Code Online (Sandbox Code Playgroud)
我该怎么做?谢谢.