1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
i = [1, 2, 3, 4, 5]; j = [1, 3, 2, 4, 1]; s = [10, 20, 30, 40, 50]; sparse_matrix = sparse(i, j, s, 5, 5);
fprintf('稀疏矩阵:\n'); disp(full(sparse_matrix));
fprintf('非零元素个数:%d\n', nnz(sparse_matrix)); fprintf('稀疏度:%.2f%%\n', (1 - nnz(sparse_matrix)/numel(sparse_matrix)) * 100);
full_matrix = [1, 0, 0, 4; 0, 2, 0, 0; 0, 0, 3, 0; 5, 0, 0, 6]; sparse_from_full = sparse(full_matrix); fprintf('从完整矩阵创建的稀疏矩阵:\n'); disp(full(sparse_from_full));
A_sparse = sparse([1,2,3], [1,2,3], [1,2,3], 3, 3); B_sparse = sparse([1,2,3], [3,2,1], [3,2,1], 3, 3);
sum_sparse = A_sparse + B_sparse; mult_sparse = A_sparse * B_sparse;
fprintf('稀疏矩阵A:\n'); disp(full(A_sparse)); fprintf('稀疏矩阵B:\n'); disp(full(B_sparse)); fprintf('A + B:\n'); disp(full(sum_sparse)); fprintf('A * B:\n'); disp(full(mult_sparse));
[rows, cols, vals] = find(sparse_matrix); fprintf('非零元素位置和值:\n'); for k = 1:length(vals) fprintf('(%d,%d) = %.1f\n', rows(k), cols(k), vals(k)); end
|