这是一个简单的问题。以下嵌套for循环创建一个正弦波值数组。
N = 2^16;
for m = 1:10;
for i = 1:N
sine(m,i) = sin(2*pi*i./(8*2^m));
end
end
似乎我应该能够在不使用for循环的情况下创建这个数组,但是我尝试了各种语法并且总是收到错误消息。提前感谢任何见解。
答案 0 :(得分:6)
您可以像这样使用bsxfun
:
sine = sin(bsxfun(@times, 2*pi*(1:2^16), 1./(8*2.^(1:10))' ));
答案 1 :(得分:5)
尝试以下方法:
ii = 1:2^16;
m = [1./(2.^(1:10))].'% transpose
prefactor = 2 * pi / 8;
sine = sin(prefactor * m * ii);
我执行矩阵乘法A*B
,其中a是列向量大小nrows,B是行向量大小ncols,得到的矩阵大小为nrows x ncols。因此,m
是列向量,ii
是行向量。
答案 2 :(得分:4)
尝试使用ndgrid
N=2^16;
[M, I] = ndgrid(1:10, 1:N);
sine = sin(2*pi*I./(8*2.^M));