【发布时间】:2013-12-26 06:46:12
【问题描述】:
假设我有一个矢量y 喜欢
2
4
3
10
我想得到一个矩阵
0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
在 octave/matlab 中最简单/最干净/“最好”的方法是什么?我想出了:
repmat(y, 1, 10) == repmat(1:10, 4, 1)
还有比这更好的方法吗?在考虑之后对我来说是有意义的,但我觉得对于阅读代码的人来说解析有点困难(虽然 idk,我对矢量化相对较新,很多矢量化代码对我来说都是这样的)。
【问题讨论】:
-
所以“更好”是指“更容易阅读?”
-
@RobertHarvey 我想,除非这只是以牺牲其他重要的东西(例如,效率)为代价的情况。我是 octave 的新手,所以我主要是想知道更熟悉它的人如何实现这个
-
@alecbenzer 不要在这里
repmat... 非常浪费内存。如果可以,请使用sparse表示您的结果...
标签: matlab matrix octave vectorization