Home License -- for personal use only. Not for government, academic, research, commercial, or other organizational use. 24-Oct-2026 20:33:31 deblur_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 Test deblur(). circle_transform(): plot a unit circle and its image after multiplication by a random 2x2 matrix A. Using randomly chosen matrix A: 0.1575 0.3617 0.2494 0.2233 Singular values of A are 0.505877 and 0.108824 Graphics saved as "circle_transform.png" compute_splus_test(): Compute S+ from the SVD of a random matrix A. Using randomly chosen matrix A: 0.3956 0.3276 0.2330 0.5566 0.2755 0.5851 0.5296 0.7888 0.0853 0.1246 0.6551 0.5107 0.5771 0.9832 0.0231 0.1352 0.6485 0.1198 0.1914 0.3597 0.7136 0.2190 0.7482 0.2132 0.9877 The S factor: 2.2895 0 0 0 0 0 0.9255 0 0 0 0 0 0.5733 0 0 0 0 0 0.5388 0 0 0 0 0 0.0429 Splus: 0.4368 0 0 0 0 0 1.0804 0 0 0 0 0 1.7442 0 0 0 0 0 1.8559 0 0 0 0 0 23.3034 pseudoinverse_test(): Compute A+, the pseudoinverse of A, from the SVD. Using randomly chosen matrix A: 0.0814 0.5637 0.6295 0.2437 0.1564 0.9550 0.2142 0.4284 0.1110 0.7046 0.0842 0.5723 0.0640 0.6467 0.2845 0.7118 0.7201 0.2588 0.2527 0.6673 Aplus: -0.1290 1.0198 -0.3039 -1.6114 1.3720 -0.0449 1.5118 0.3134 -0.8707 -0.2941 1.7466 -0.7889 -0.7285 0.4164 0.0492 -0.4983 -1.3993 0.5031 1.9071 0.1130 A*Aplus: 0.9422 0.0977 -0.1840 0.1049 0.0044 0.0977 0.8348 0.3112 -0.1773 -0.0074 -0.1840 0.3112 0.4136 0.3341 0.0139 0.1049 -0.1773 0.3341 0.8096 -0.0079 0.0044 -0.0074 0.0139 -0.0079 0.9997 Aplus*A: 1.0000 0.0000 0.0000 0 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 0.0000 1.0000 0.0000 0.0000 -0.0000 0.0000 1.0000 kronecker_demo(): This function shows how to work with Kronecker products and SVD's. Suppose K = kronecker_product ( A, B ) Suppose we want to solve K*f=g using the singular value decomposition of K. In this example, we choose random values for f, A and B, then compute K and g. Instead of solving K*f=g by taking the SVD of K we compute the SVD's of A and B, which implicitly define the SVD of K. Then we can determine the solution f and we never actually formed the SVD of K, and we really never had to form K either. The matrices A and B will be of order 3x3 The matrix K will have order 9x9 There are two ways to form the right hand side g. To show they are the same, here is the norm of their difference: norm(G - g) = 9.930137e-16 Here is the error between the exact solution F and the solution we computed: norm(F - Fc) = 1.674101e-15 Now let's show that we really can compute the SVD of K. Does the product U * S * V' = K? Norm ( K - U*S*V' ) = 3.224361e-15 Is our U matrix orthogonal? norm ( U*U'-I ) = 2.716656e-15 Is our V matrix orthogonal? norm ( U*V'-I ) = 2.626718e-15 deblur(): deblur an image using the SVD. Graphics saved as "blurred_image.png" Use Tikhonov regularization with parameter lambda: Graphics saved as "tik_0.050000.png" Graphics saved as "tik_0.010000.png" Graphics saved as "tik_0.005000.png" Graphics saved as "tik_0.002500.png" Graphics saved as "tik_0.001500.png" Graphics saved as "tik_0.001000.png" Graphics saved as "tik_0.000950.png" Graphics saved as "tik_0.000167.png" Graphics saved as "tik_0.000050.png" Use TikSVD regularization with parameter lambda: Graphics saved as "tiksvd_100.png" Graphics saved as "tiksvd_250.png" Graphics saved as "tiksvd_500.png" Graphics saved as "tiksvd_1000.png" Graphics saved as "tiksvd_1500.png" Graphics saved as "tiksvd_2000.png" Graphics saved as "tiksvd_2500.png" Graphics saved as "tiksvd_4000.png" Graphics saved as "tiksvd_6000.png" Graphics saved as "tiksvd_8000.png" Use TikSVD2, an alternative approach: Graphics saved as "tiksvd2_197.png" Graphics saved as "tiksvd2_792.png" Graphics saved as "tiksvd2_1130.png" Graphics saved as "tiksvd2_1584.png" Graphics saved as "tiksvd2_2040.png" Graphics saved as "tiksvd2_2379.png" Graphics saved as "tiksvd2_2417.png" Graphics saved as "tiksvd2_4857.png" Graphics saved as "tiksvd2_7876.png" deblur_test(): Normal end of execution. 24-Oct-2026 20:33:45