向量化连续幂矩阵的创建
让x=1:100
和N=1:10
。我想创建一个矩阵x^N
,以便i
th列包含条目[1 ii^2 .. .i^N]
。
我可以使用 for 循环轻松地做到这一点。但是有没有办法使用矢量化代码来做到这一点?
Let x=1:100
and N=1:10
. I would like to create a matrix x^N
so that the i
th column contains the entries [1 i i^2 ... i^N]
.
I can easily do this using for loops. But is there a way to do this using vectorized code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我会选择:
另一个解决方案(可能更有效):
或者甚至:
希望这会有所帮助。
I'd go for:
Another solution (probably much more efficient):
Or even:
Hope this helps.
听起来像范德蒙德矩阵。因此,请使用 vander:
Sounds like a Vandermonde matrix. So use vander:
由于您的矩阵不是那么大,因此最直接的方法是使用 MESHGRID 和逐元素幂运算符
.^
:这将创建一个 11×100 矩阵,其中每列
i
包含[i^0;我^1;我^2; ...我^10]
。Since your matrices aren't that big, the most straight-forward way to do this would be to use MESHGRID and the element-wise power operator
.^
:This creates an 11-by-100 matrix where each column
i
contains[i^0; i^1; i^2; ... i^10]
.不确定它是否真的符合你的问题。
编辑:
正如阿德里安所指出的,我的第一次尝试不符合OP问题。
Not sure if it really fits your question.
EDIT:
As pointed out by Adrien, my first attempt was not compliant with the OP question.
为什么不使用易于理解的 for 循环呢?
需要更多的思考才能理解人们所展示的这段代码的巧妙矢量化版本。我的做法更像是一种野蛮的方式,但任何读过它的人都会理解它。
我更喜欢易于理解的代码。
(是的,我可以预先分配。对于像这样的小情况,不值得降低清晰度。)
Why not use an easy to understand for loop?
It takes more thinking to understand the clever vectorized versions of this code that people have shown. Mine is more of a barbarian way of doing things, but anyone reading it will understand it.
I prefer easy to understand code.
(yes, I could have pre-allocated. Not worth the lowered clarity for small cases like this.)