MATLAB中使用SVD奇异值分解(matlab svd函数用法)
SVD(Singular Value Decomposition, 奇异值分解)是线性代数中既优雅又强大的工具, 它揭示了矩阵最本质的变换. 使用SVD对矩阵进行分解, 能得到代表矩阵最本质变化的矩阵元素. 这就好比一个合数能表示为若干质数之积, 分解合数能得到表示该合数的质因数; 复杂周期信号可以表示为若干简单的正弦波和余弦波之和, 使用傅里叶变换能得到表示该信号的简单波; 复杂矩阵所代表的线性变换可由若干个简单矩阵所代表的线性变换组合起来, 使用SVD能找到这些简单矩阵。
matlab中代码如下:
img =imread('../test . jpg');
gray = im2gray(img);
gray = im2double(gray);
[U,S,V] = svd(gray);
k = 10;
newImage = 0;
for i = 1:k
temp =U(:,i)*S(i,i)*V (:,i)';
newImage = newImage+ temp;
end
figure;
subplot(2,1,1); imshow(img); xlabel('原始')
subplot(2,1,2); imshow(newImage'); xlabel('k=10')