我正在使用64个比拉布和32g的援助团(如你所知)。
我有130万份档案(主持人)。 我想用同样长的另一种矢量,即每一点是整个第一病媒的加权平均数,加上与这一位置的反向距离(实际上它的位置是^-0.1,而不是^-1,而是为目的)。 我可以不使用mat子过滤功能,因为它只能在目前时间点之前平均使用吗? 更清楚的解释,这里就是一个3个要素的例子。
data = [ 2 6 9 ]
weights = [ 1 1/2 1/3; 1/2 1 1/2; 1/3 1/2 1 ]
results=data*weights= [ 8 11.5 12.666 ]
i.e.
8 = 2*1 + 6*1/2 + 9*1/3
11.5 = 2*1/2 + 6*1 + 9*1/2
12.666 = 2*1/3 + 6*1/2 + 9*1
因此,新病媒中的每一个点都是整个第一病媒的加权平均数,加权量为1/(从该位置+1中分离)。
I could just remake the weight vector for each point, then calculate the results vector element by element, but this requires 1.3 million iterations of a for loop, each of which contains 1.3million multiplications. I would rather use straight matrix multiplication, multiplying a 1x1.3mil by a 1.3milx1.3mil, which works in theory, but I can t load a matrix that large.
然后,我试图用手法制作矩阵图,并将其索引在书目中,因此,目前只需要矩阵的相关一栏,但时间也很长。
我无需做这项工作,因此,希望有人就利用这么多的人数和平均人数提出建议。 自2006年以来 我使用了^-0.1的重量,而不是^-1的重量,但并未放弃这一高点,即与原来的1个加权点相比,第100万点的加权仍然为0.25,因此,我只能将其截断,因为它要么大。
这样做是否足够?
下面是答案的代码(这样可以加以编排):
data = load( /Users/mmanary/Documents/test/insertion.txt );
data=data. ;
total=length(data);
x=1:total;
datapad=[zeros(1,total) data];
weights = ([(total+1):-1:2 1:total]).^(-.4);
weights = weights/sum(weights);
Fdata = fft(datapad);
Fweights = fft(weights);
Fresults = Fdata .* Fweights;
results = ifft(Fresults);
results = results(1:total);
plot(x,results)