【发布时间】:2014-08-03 17:42:50
【问题描述】:
我有一个矢量y = [0; 2; 4]
我想将它的每个元素转换成向量,其中所有元素都为零,但索引等于 digit 的元素为 1。
我想不使用循环。
例如[0; 2; 4]应该转换为
[1 0 0 0 0 0 0 0 0 0;
0 0 1 0 0 0 0 0 0 0;
0 0 0 0 1 0 0 0 0 0]
(在这个例子中,向量的第一个索引是 0)
【问题讨论】:
-
为什么没有循环?这似乎是一个随机限制。
-
输出矩阵的大小是怎么决定的?
-
@Jongware -
for循环在 MATLAB 中是出了名的慢。将其矢量化始终是建议的方法。但是,根据您正在执行的操作,for循环可以在 JIT 编译器的帮助下与矢量化方法一样快,因为 MATLAB 本质上使用的是 JVM。如果您好奇,请查看这篇文章:stackoverflow.com/questions/23879888/…
标签: matlab matrix octave matrix-multiplication