相关疑难解决方法(0)

如何从矩阵的每一行中减去一个向量?

可能重复:
如何将矩阵的每一行除以固定行?

我正在寻找一种优雅的方法来从矩阵的每一行中减去相同的向量.这是一种非常优雅的方式.

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)

matlab vector matrix subtraction

26
推荐指数
2
解决办法
6万
查看次数

如何在MATLAB中按列总和划分矩阵元素?

有没有一种简单的方法可以将每个矩阵元素除以列总和?例如:

input:

1  4

4  10

output:

1/5  4/14

4/5  10/14
Run Code Online (Sandbox Code Playgroud)

matlab matrix column-sum

20
推荐指数
1
解决办法
2万
查看次数

Matlab - 从[MxN]矩阵元素中快速减去[1xN]数组

可能重复:
如何从矩阵的每一行中减去一个向量?
如何将矩阵的每一行除以固定行?

我有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)

但是,这是两行代码并在内存中创建一个新元素.执行此操作的最快且内存最少的方法是什么?

memory matlab subtraction

8
推荐指数
2
解决办法
2万
查看次数

如何用行的总和来划分矩阵元素

我想将矩阵的每个元素除以元素所属的行的总和.例如:

[1 2      [1/3 2/3 
 3 4] ==>  3/7 4/7]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?谢谢.

matlab

4
推荐指数
1
解决办法
5079
查看次数

标签 统计

matlab ×4

matrix ×2

subtraction ×2

column-sum ×1

memory ×1

vector ×1