Я хочу получить самые высокие коэффициенты после применения PCA к изображению с помощью Matlab. Для этого я собираюсь преобразовать матрицу пикселей в массив и затем отсортировать ее. Как это сделать? или есть лучший способ сортировки 10 самых высоких коэффициентов PCA?
Пример кода следующий.
close all
clear all
imIdx = 8;
cropCorner = [100 100];
resampleRatio = 1.25;
N = 2; % window size
M = 64; % block size
im = imread('kodim06.png');
[H,W,~] = size(im);
for k = 1:length(resampleRatio)
r = resampleRatio(k);
cropWidth = floor(M/r);
img = double(im(cropCorner(1):cropCorner(1)+cropWidth-1, ...
cropCorner(2):cropCorner(2)+cropWidth-1));
%img = imresize(img,[M M],'bilinear');
pmap = emresample(img,N,'verbose');
fmap = fft2c(pmap);
% display p-map
figure;
subplot(131)
imshow(img,[])
subplot(132)
imshow(pmap,[])
subplot(133)
imshow(abs(rmcenter(fmap)),[]);
filename = sprintf('F:/Project/ImgPro/EM/im%i_r%.2f.png',imIdx,(r-1)*100);
imwrite(fmap,filename)
%disp(fmap);
coeff = pca(fmap);
eigval = eig(coeff);
disp(eigval);
end