可能重复:
如何将矩阵的每一行除以固定行?
我正在寻找一种优雅的方法来从矩阵的每一行中减去相同的向量.这是一种非常优雅的方式.
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) 假设我有一个矩阵,如:
100 200 300 400 500 600
1 2 3 4 5 6
10 20 30 40 50 60
...
Run Code Online (Sandbox Code Playgroud)
我希望将每一行划分为第二行(每个元素由相应的元素划分),所以我会得到:
100 100 100 100 100 100
1 1 1 1 1 1
10 10 10 10 10 10
...
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)