2016-06-21 85 views
1

我的Matlab是有點生疏,我不能拿出一個純溶液(有效),生成-n的多個序列:N

希望的輸出對於給定的n最大:

nMax = 3; 
mn = cell2mat(arrayfun(@(n) [(-n:n) ;(-n:n)*0+n], 1:nMax, 'UniformOutput', false)); 
mn = 

-1  0  1 -2 -1  0  1  2 -3 -2 -1  0  1  2  3 
1  1  1  2  2  2  2  2  3  3  3  3  3  3  3 

(或者,理想情況下,其轉置)。


編輯:這裏是不錯的加速提出的方案的概要,

tN = [5:100, 200:50:1000]; 
for ii=1:length(tN) 
f1 = @() f_mn(tN(ii)); 
f2 = @() f_mn2(tN(ii)); 
gain(ii) = timeit(f1)/timeit(f2); 
end 

enter image description here

回答

2

試試這個:

nMax = 3; 
u = nMax^2+2*nMax; 
mn = [ ones(u, 1) zeros(u, 1) ]; 
vv = 1:nMax; 
ww = vv.^2; 
mn(ww, 1) = -2*vv+1; 
mn(ww, 2) = 1; 
mn = cumsum(mn, 1); 

不知道如何高效的IT將會。但寫作很有趣:-)