Matlab HOG特征向量的降维

Matlab HOG特征向量的降维,matlab,machine-learning,computer-vision,pca,Matlab,Machine Learning,Computer Vision,Pca,我在MATLAB中找到了下图的HOG特征向量 prinvec = pca(features); 我使用了以下代码 I = imread('input.jpg'); I = rgb2gray(I); [features, visualization] = extractHOGFeatures(I,'CellSize',[16 16]); 功能被证明是一个1x1944向量,我需要降低这个向量的维数(比如说1x100),我应该采用什么方法 我想到了主成分分析,并在MATLAB中运行了以下

我在MATLAB中找到了下图的HOG特征向量

prinvec = pca(features);  

我使用了以下代码

I = imread('input.jpg');
I = rgb2gray(I);
[features, visualization] = extractHOGFeatures(I,'CellSize',[16 16]);  
功能
被证明是一个
1x1944
向量,我需要降低这个向量的维数(比如说
1x100
),我应该采用什么方法

我想到了主成分分析,并在MATLAB中运行了以下程序

prinvec = pca(features);  

prinvec
变成了一个空矩阵(
1944x0
)。我做错了吗?如果不是PCA,我可以使用什么其他方法来降低维度?

你不能在这方面进行PCA,因为你的特征比你的单一观察更多。获得更多的观察结果,大概10000个,然后你可以进行PCA


有关为什么会出现这种情况的更详细的数学解释,请参见。

否。不是PCA。不会了。这行不通。您只有1个观察点和近2k个特征。不可能的。“请看看为什么这是不可能的。”阿德里安·谢恩说。我刚刚意识到我应该做什么。我应该循环浏览视频的每一帧,形成一个
Nx1944
HOG矩阵,然后应用PCA。是吗?可能的话,如果
N>1e4
,请参阅我的答案,我链接了为什么您需要比功能多5倍的观察值。是的,您能否将您提到的所有内容都写下来作为答案,以便我可以将其标记为答案。您试图提取哪些功能,您的最终目标是什么?在视频中循环并将PCA应用于最终的特征矩阵并不一定能满足您的需要