tusvd.m

来自「图像的奇异值分解」· M 代码 · 共 25 行

M
25
字号
A=[1 2 1;2 3 2;1 2 1 ];       %给出一个假设矩阵,测试其变换
[u d v] = svd(A);                %对其进行svd分解
[nx,ny] = size(A);  %确立A的大小,nx行ny列%
I=eye(nx,nx);          %单位阵
for i=nx:-1:2
    I(i,i) = 0;
end                   %循环将对角线上元素值设为0%
B=u*I*d*v';
B                %矩阵A的变形结果B

[X,map] = imread('G:\程序练习用图片\cameraman.bmp');     %对图像进行操作%
 X= rgb2gray(X);         %转化为灰度图%
X=double(X);
A=X(100:250 ,100:250);       %取一步分作为A,以下变换同上
[nx,ny] = size(A);
I=eye(nx,nx);
for i=nx:-1:10  %10进行变化影响第2幅图的清晰度,越大越接近原图%
    I(i,i) = 0;
end
[u d v]=svd(A);
B=u*I*d*v';
subplot(211)
imshow(A,map);
subplot(212)
imshow(B,map);         %显示两幅图像%

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?