08-Oct-2025 20:02:32 svd_snowfall_test(): MATLAB/Octave version 6.4.0 Test svd_snowfall(). svd_snowfall_test01(): Read, process, and return snowfall data in "snowfall_data.txt". Initial data rows M = 134 Initial data columns N = 10 After removing columns 1 and 10, and transposing the matrix, we have: Revised data rows M = 8 Revised data columns N = 134 svd_snowfall_test02(): Look at the singular values. If the singular values are close, then the data is well spread out. If the singular values decay rapidly, then the data exhibits patterns, or is constrained to a lower-dimensional subspace. The singular values: 1: 970.038 2: 244.742 3: 181.622 4: 147.74 5: 135.332 6: 83.3887 7: 39.51 8: 23.6097 Plotted the singular values in "singular_values.png". The cumulative energy: 1: 0.8688 2: 0.924104 3: 0.954561 4: 0.974714 5: 0.991624 6: 0.998044 7: 0.999485 8: 1 svd_snowfall_test03(): Compute the rank 1 through rank 5 approximations to the data. Compare each of these to the 2012 snowfall data. Graphics saved as "rank_one_approximants.png" svd_snowfall_test04(): Look at the first 6 modes in the U matrix. Each of these represents a pattern for snowfall over a year. The first mode is the pattern that is strongest in the data. Graphics saved as "u_modes.png" svd_snowfall_test05(): Look at the first 6 modes in the V matrix. Each of these represents a pattern shared by all the months, and extending across the sampling years. Plotted V modes 1 to 6 in "v_modes.png". svd_snowfall_test(): Normal end of execution. 08-Oct-2025 20:02:36