美好的一天, 我有一个数据集,我想在其上执行特定的自动关联功能:
但是,我真的不知道如何实现这一点。
我拥有的数据是一个包含1行和400列的数组。所以我只想编写一个完全符合上述内容的脚本,从i = 0
开始它应该将元素1与元素1相乘,元素2与元素2相等,一直到400.然后,它应该乘以元素1表示元素2,2表示3表示,依此类推。
我也想对它进行标准化,使得第一个点等于1.
现在我看到了这个问题,即应该为n = infinity
做到这一点。这意味着如果j+i
相当快,j+i > 400
元素将不存在。我不知道如何处理。
我知道我应该尝试自己编写一个脚本,而不仅仅是问你该怎么做。但是,我担心我上周才开始使用MatLab,而且我仍然非常缺乏经验。
到目前为止,我所想到的是,为了规范化,只需将每个元素除以第一个元素的值。这样,第一个等于1,我想这就是我所需要的。我可以在最后一直这样做。
到目前为止我想出的是
for n = 0:399
correlation(n) = 0;
for m = 1:400
correlation(n) = correlation (n) + dataset(1,m)*dataset(1,m+n);
end
end
在这里,我没有考虑到数组只有400列,因为我真的不知道如何。但如果原则上有无限列,这是正确的想法吗? (除了循环永远不会结束的事实,因为它是无限的,但在理论上)
也许像
for n = 0:399
correlation(n+1) = 0;
for m = 1:400
if m+n < 401
correlation(n+1) = correlation (n+1) + dataset(1,m)*dataset(1,m+n);
end
end
end
correlation = correlation ./ correlation(1,1);
plot(x,correlation, 'b')
会奏效吗?它给我一个从1到大约0的图表。我只是不确定这是否有意义,以及是否有可能更有效地做到这一点。
答案 0 :(得分:0)
我拥有的数据是一个包含1行和400列的数组。所以我只想编写一个完全符合上述条件的脚本,从i = 0开始它应该将元素1与元素1相乘,元素2与元素2相乘,一直到400.然后,它应该将元素1与元素2,2与三,等等。
如果我正确理解了这个部分,你想要将每个可能的数据集组合相乘。这可以通过Kronecker张量积来完成。有关详细信息,请参阅Mathworks。
所以你可以用以下方式来表达它:
MultipliedDataSet = kron(dataset,dataset')
其中dataset'是原始数据的转置版本。希望我理解正确,并希望它有所帮助。