前言
一般我们在进行数值计算时,经常会遇到求解如下等式的问题:
A
x
=
b
Ax=b
Ax=b
其中矩阵A往往非常稀疏(即其中有约60%以上的元素都是零)且成“块”“带”状分布。有时我们想看一下其非零元的分布,就可以借助Matlab或者Python的函数实现。
Matlab画矩阵的非零元分布图
程序
%Matlab code
clear
clc
load("A.mat")
spy(A)
结果
Python画矩阵的非零元分布图
程序
import numpy as np
import matplotlib.pyplot as plt
def read_file(file_name):
f = open(file_name)
lines = f.readlines()
K = np.zeros((len(lines), len(lines)))
i = 0
for line in lines:
line = line.strip().split('\t')
#K[i, :] = np.array(list(map(int, line)))
K[i] = list(map(int, line))
i+=1
return K
if __name__ == '__main__':
file_name = "A.txt"
K = read_file(file_name)
plt.matshow(K)
plt.show()
结果
总结
基本都是一行代码的事:
Matlab :spy(A)
Python : matshow(K)
在此亦是回顾一下Python读取文本数据的代码。以上代码和矩阵数据以及结果图都可以去我的GitHub上下载。同时目录下也有自己学习Python过程中总结的一些程序,都有注释,欢迎大家一起学习。