如何将矩阵的每一行除以固定行?
假设我有一个像这样的矩阵:
100 200 300 400 500 600
1 2 3 4 5 6
10 20 30 40 50 60
...
我希望将每一行除以第二行(每个元素除以相应的元素),所以我会得到:
100 100 100 100 100 100
1 1 1 1 1 1
10 10 10 10 10 10
...
我可以这样做吗(无需编写显式循环)?
Suppose I have a matrix like:
100 200 300 400 500 600
1 2 3 4 5 6
10 20 30 40 50 60
...
I wish to divide each row by the second row (each element by the corresponding element), so I'll get:
100 100 100 100 100 100
1 1 1 1 1 1
10 10 10 10 10 10
...
Hw can I do it (without writing an explicit loop)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 bsxfun:
bsxfun 的第一个参数是您要应用的函数的句柄,在本例中为右除函数。
Use
bsxfun
:The 1st argument to
bsxfun
is a handle to the function you want to apply, in this case right-division.这里有一些更等效的方法:
最好的解决方案是使用 BSXFUN 的解决方案(如 @Itamar Katz)
Here's a couple more equivalent ways:
The best solution is the one using BSXFUN (as posted by @Itamar Katz)
您现在可以使用数组与矩阵运算。
这将起到作用 :
它将输出 :
这将从 R2016b 开始在 Octave 和 Matlab 中工作。
You can now use array vs matrix operations.
This will do the trick :
which will output :
This will work in Octave and Matlab since R2016b.