matlab的问题,高手请进!

来源:百度知道 编辑:UC知道 时间:2024/06/30 02:20:09
用matlab实现:
1.矩阵A=[1 1 1 1 1;1 2 3 4 5; 1 3 6 10 15;1 4 10 20 35;1 5 15 35 69],A=L*L'(L'表示L的转置),求L.

2.导入一张bmp图片,利用svd,将其转化为jpg.

谢谢

1.
对于正定阵用L=chol(A)就可以了,
你给的矩阵是非正定的,差别在最后一个元素,多数例子上给的都是70,你给的是69.
需要新的算法才行.
幸好所给矩阵是半正定的,下面的程序可以用于对半正定矩阵进行Cholesky分解:
clear
A=[1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 69];
for i=1:5
for j=1:i
if j<i
if j==1
b=0;
else b=sum(L(i,1:j-1).*(L(j,1:j-1)));
end
L(i,j)=(A(i,j)-b)/L(j,j);
else
if j==1
d=0;
else d=sum(L(i,1:j-1).^2);
end
L(i,j)=(A(i,i)-d)^(1/2);
end
end
end
L

2.
clear
OriName='1.bmp';A=double(imread(OriName));
R=A(:,:,1);G=A(:,:,2);B=A(:,:,3);
[U11,S1,V111] = svd(R);[U22,S2,V222] = svd(G);[U33,S3,V333] = svd(B);
R=U11*S1*V111;G=U22*S2*V222;B=U33*S3*V333;
A(:,:,1)