G K*_*lly 1 matlab vectorization
我有一个矩阵A,包含一年中每一天的24个值(每小时一个值).每列A是不同的一天,每天有24行的数据(A24乘365).我想通过比较每天的小时数据来比较每一天.为此,我将获取一列数据并将其与下一列进行比较.我取两列中每小时数据的差异,然后将它们平方并求它们得到一个值,表明两天的相似程度.然后我用每个可能的天数组合做这个,创建一个365乘365的矩阵d,表明每天与每一天的相似程度.例如,元素d(20,100)包含一个值,表示一年中第20天与第100天的相似程度.代码正在运行,但速度很慢,我希望能够对其进行矢量化.非常感谢帮助.
for j=1:365
for k=1:365
d(j,k)=sqrt(sum((A(:,j)-A(:,k)).^2));
end
end
Run Code Online (Sandbox Code Playgroud)
成对欧几里德距离使用pdist,它在C中进行重载,并squareform创建距离矩阵:
d = squareform(pdist(A.'));
Run Code Online (Sandbox Code Playgroud)
如果您需要更快的速度(365乘365不是很大),请在此处查看我的答案或尝试此文件交换程序.