我目前正在使用squeeze从矩阵中删除两个单例维度.矩阵是一个大的4d矩阵M(:,:,:,:).前两个维度是行和列坐标(y和x).第三维(indexes)中的变量选择第三维中的几个值M.
在我正在运行的for循环中,矩阵M被压缩为M(y,x,indexes,:),这使得前两个维度为单个维度.然后将这些尺寸移除以squeeze供使用pdist,如下所示:
pdist(squeeze(M(y,x,indexes,:)))
Run Code Online (Sandbox Code Playgroud)
我可以squeeze在这种情况下使用矢量化吗?(它在循环中占用了大量时间)
如果M在循环内没有改变矩阵,一个简单的解决方案是在运行for循环之前用PERMUTE重新排序矩阵维度:
Mperm = permute(M,[3 4 1 2]);
Run Code Online (Sandbox Code Playgroud)
然后你就可以解决Mperm的,而不是M作为Mperm(:,:,y,x).