【发布时间】:2019-04-04 14:19:07
【问题描述】:
假设我想做一个vector:
A = [4 8 16 32]
有没有办法使用colon 操作符来做到这一点?
例如:
A = 4:(*2):32;
【问题讨论】:
-
不,它不能。冒号运算符只能为每个值添加一个固定的步长。但在这种情况下,您可以将运算(乘法)转换为加法,然后再转换回来:
A = 2.^(2:5);
假设我想做一个vector:
A = [4 8 16 32]
有没有办法使用colon 操作符来做到这一点?
例如:
A = 4:(*2):32;
【问题讨论】:
A = 2.^(2:5);
不,这在 Matlab 中是不可能的。你可以像@Luis 展示的那样使用它:
A = 2.^(2:5);
或者,如果您想在将来使用不同的功能:
A = [];
for n = 2:5
A = [A n^2];
end
通过将 for 循环和 n^2 部分的限制更改为您想要的值,您可以随心所欲地进行操作。
希望这会有所帮助。
【讨论】:
A=[A,n] 扩展数组效率非常低。做A(end+1)=n是much, much faster。但是,如果可能,应该始终preallocate 而不是重复扩展数组。