SVD - 仅计算矩阵U的x个特征向量

时间:2016-11-20 05:24:21

标签: matlab matrix svd eigenvalue eigenvector

我有一个来自图像的m×n矩阵输入,最终转换成具有N数据集的矢量矩阵。例如,尺寸为40x40的图像将变为400x1矩阵数据。因此,如果我有50张图像,输入将变为400x50数据矩阵。

由于分解,SVD将产生三个矩阵:

U mxm,S mxn,V nxn。

使用相同大小的输入,它将变为:

U(400x400)尺寸,S(400x50)尺寸和V(50x50)。

由于整体计算时间过长而且我只需要大约50个矩阵U的特征向量,我如何停止该过程并获得矩阵U(400x50)大小而不是U(400x400)大小的输出?

我正在使用jacobi方法,这是代码:

while (sum(abs(A(~eye(m,n)))) > e)
  for i = 1:n
      for j = i+1:n
          [J1,J2] = jacobi1(A,m,n,i,j);
          A = mtimes(J1,mtimes(A,J2));
          U = mtimes(U,J1');
          V = mtimes(J2',V);
      end
      for j = n+1:m
          J1 = jacobi2(A,m,n,i,j);
          A = mtimes(J1,A);
          U = mtimes(U,J1');
      end
    %  progressbar((i/10)/pb);
  end
 end

0 个答案:

没有答案