我有一个来自图像的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