Matlab:将 4-d 矩阵重塑为 2-d 并保持顺序,如何?

Matlab: reshape 4-d matrix to 2-d and maintain order, how to?

我正在尝试使用 California ND Datastet 实现 vlsh,它由 701 张照片组成。 10 名受试者在一个 txt 文件中写下了他们的照片几乎是重复的,我们也有相关矩阵。 图像是 RGB,我将它们缩小为 20x20。我创建了一个 4 维数组 20x20x3x701。于是我尝试reshape得到了一个1200x701的矩阵,但问题是reshape不能保持原矩阵的顺序。 我尝试在网上搜索,大多数建议是使用"Permute",但在我看来不适合我的情况。

我可以post matlab代码:

`
path='C:\Users\franc\Desktop\stage\californiaND\prova*.jpg';
path2='C:\Users\franc\Desktop\stage\californiaND\prova';
d=dir(path);
a=[];
for m=1:length(d)
  a=cat(4,a,imread(strcat(path2,d(m).name)));
end
r=reshape(a,[],701);
r=double(r);
L = lshConstruct( r, 10,4);`

我假设您需要 RGBRGB 格式的一维向量,否则解决方案将很简单(仅 (:))。

假设 imread 正在一张一张读取 20x20x3 图像,这就是您直接制作二维矩阵的方式:

for m=1:length(d) % this is 701, right?
  im=imread(strcat(path2,d(m).name));
  im=permute(im,[3 1 2]);
  a=cat(2,im(:));
end