class SparseMatrix: def __init__(self, m, n, data): self.m = m self.n = n self.data = data self.tuple_list = [] for i in range(self.m): for j in range(self.n): if data[i][j] != 0: self.tuple_list.append((i, j, data[i][j])) def __add__(self, other): if self.m != other.m or self.n != other.n: raise ValueError("两个矩阵的维度不一致") result_data = [[0] * self.n for _ in range(self.m)] for i, j, v in self.tuple_list: result_data[i][j] += v for i, j, v in other.tuple_list: result_data[i][j] += v return SparseMatrix(self.m, self.n, result_data) def print_matrix(self): for i in range(self.m): for j in range(self.n): print(self.data[i][j], end=" ") print() A = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0]] B = [[0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 0, 0]] sparse_A = SparseMatrix(3, 4, A) sparse_B = SparseMatrix(3, 4, B) sparse_C = sparse_A + sparse_B sparse_C.print_matrix()
时间: 2024-04-28 12:27:19 浏览: 131
FFt.rar_DFT幅度谱_K._k-sparse n-point DFT
这段代码实现了基于三元组顺序表的稀疏矩阵加法。具体来说,它定义了一个 `SparseMatrix` 类,用于表示稀疏矩阵,其中包含如下方法:
- `__init__(self, m, n, data)`:初始化稀疏矩阵的大小和数据,并将非零元素存储到一个三元组列表中。
- `__add__(self, other)`:重载加法运算符,实现稀疏矩阵的加法。首先检查两个矩阵的维度是否一致,然后将稀疏矩阵转换为普通矩阵,并进行加法运算。最后,返回一个新的稀疏矩阵对象。
- `print_matrix(self)`:打印稀疏矩阵的数据。
在代码的最后,它创建了两个稀疏矩阵对象 `sparse_A` 和 `sparse_B`,分别表示矩阵 A 和 B,然后将它们相加,得到一个新的稀疏矩阵对象 `sparse_C`,并打印出它的数据。
阅读全文