我想创建一个矩阵( M -by- N ),取M
个连续样本并将它们放在矩阵的列中。所以,序列是 x [0],x [1],...,x [MN-1] 其中 N = 0,1,2,...,n < / em>和矩阵看起来像数学
A = [x_0, x_M,.....,x_{M(N-1)};
x_1, x_M+1,....,x_{M(N-1)+1};
. ......;
: : :;
x_{M-1},x_{2M-1},....,x_{MN-1}]
请帮忙
答案 0 :(得分:3)
Matlab允许线性索引,即以4乘4阵列M
,M(15)==M(3,4)
。因此,您甚至无需重新塑造阵列即可填充阵列:
M = 50;
N = 100;
A = zeros(M,N);
A(1) = 0.1;
for i = 2:N*M %// loop until the very last element
A(i) = 4*A(i-1)*(1-A(i-1));
end
答案 1 :(得分:1)
我给你另一个解决方案。
如果我理解正确,你有x
向量,那么需要创建矩阵A
。所有紧张的事情 - 元素的定位。
我们可以这样做(例如,我将使用较小的M,N
值):
M = 10;
N = 5;
x(1) = 0.1;
for ii = 2:M*N
x(ii) = 4*x(ii-1)*(1 - x(ii-1));
end
A = vec2mat(x,M)'; %'
P.S。另一个有趣的问题 - 如何使用矢量化方法创建x
......但我仍然在考虑它......
为了好奇,我将我的方法与Dan的方法进行了比较:
tic; A = vec2mat(x,M)';toc %'
Elapsed time is 0.037790 seconds.
tic; A = reshape(x,M,N); toc
Elapsed time is 0.000016 seconds.
Yeeeep,没有意义使用vec2mat
- reshape
太棒了!