如何进行数据降维



我有一组25张标签为"感染"的图像和25张标签为"正常"的图像。我试图提取双树复小波变换为基础的系数为特征的每个图像。

我使用DT-CWT获得系数的代码如下:
I = imread('infected_img1.jpg'); %read image
I = rgb2gray(I); %rgb ro gray-scale
L = 6; %no. of levels for wavelet decomposition
I = reshape(I',1,size(I,1)*size(I,2)); %change into a vector
I = [I,zeros(1,2^L - rem(length(I),2^L))]; %pad zeros to make dim(I) a multiple of 2^L
I = double(I);
dt = dddtree('cplxdt',I,L,'dtf3'); %perform DT-CWT
dt_Coeffs = (dt.cfs{L}(:,:,1) + 1i*dt.cfs{L}(:,:,2)); %extract coefficents at Level 6

现在,因为我还有24张图片要从中提取系数,所以我对每张图片都做这个块。我的最终目标是将每次迭代产生的所有系数向量相加,形成一个矩阵。但是每个图像倾向于给出不同大小的系数向量。

我想知道一种降维的方法,可以将每个向量降维到一个统一的大小,同时又能保留它的信息。谁能提出一些清晰明了的方法?

正如我在评论中提到的,

不能收缩某些东西(即删除信息)而仍然保留信息的所有

相反,您可以将所有向量填充到最大向量的长度,然后将它们连接起来创建一个矩阵。您可以编写自己的方法,但本着不重复发明轮子的精神,我以前使用的是padcat()。这是非常容易使用和垫与NaN,但你可以很容易地将其改为0

下面是一个示例用法,其中还包含从NaN0的方便转换。

>> a = [1 2 3 4];
>> b = [1 2 3];
>> c = padcat(a, b);
c =
     1     2     3     4
     1     2     3   NaN
>> c(isnan(c)) = 0
c =
     1     2     3     4
     1     2     3     0

相关内容

  • 没有找到相关文章

最新更新