From e004b8822f70c596cd7028189a185e341fdd55fb Mon Sep 17 00:00:00 2001 From: Shreya_Gert Date: Tue, 28 Nov 2023 18:15:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9IO.py=E5=AE=8C=E6=88=90=E4=BA=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=B3=A8=E9=87=8A=E5=92=8C=E8=BF=90?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IO.py | 80 ++++++++++++++++++++++++++++++++++++++----- data/testpython.mat | Bin 0 -> 352 bytes data/testpython2.mat | Bin 0 -> 216 bytes 3 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 data/testpython.mat create mode 100644 data/testpython2.mat diff --git a/IO.py b/IO.py index ef11238..d9854cf 100644 --- a/IO.py +++ b/IO.py @@ -1,35 +1,97 @@ -#==================================================================== +# ==================================================================== # 保存和输入matlat格式数据,并画图显示 # -#==================================================================== +# ==================================================================== import scipy.io as sio import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D +import os + +# 通过以下三段代码来保证scipy.io.savemat 函数的正常运行 + +# 指定要保存的文件路径 +file_path = 'data/testpython.mat' + +# 获取文件夹路径 +folder_path = os.path.dirname(file_path) + +# 如果文件夹不存在,则创建它 +if not os.path.exists(folder_path): + os.makedirs(folder_path) # 创建4个变量,并赋值 -#sio.savemat('data/testpython.mat', {'a': 1, 'b': 5, 'c': 3, 'd': 4}) -# 创建了一个变量x,并赋予一个矩阵 -#sio.savemat('data/testpython2.mat', {'x': [[1, 3, 5, 4], [5, 3, 2, 8]]}) +sio.savemat('data/testpython.mat', {'a': 1, 'b': 5, 'c': 3, 'd': 4}) +""" +这行代码调用savemat函数来保存数据。 +'data/testpython.mat': + 这是你想要保存文件的路径和文件名。这里的例子中,文件会被保存在名为data的文件夹下,文件名为testpython.mat。 +{'a': 1, 'b': 5, 'c': 3, 'd': 4}: + 这是一个Python字典,其中包含了你想要保存到.mat文件中的数据。在这个例子中,你有四个键值对,键是'a', 'b', 'c', 和'd',相应的值是1, 5, 3, 和4。 + + 注意:scipy.io.savemat 函数在保存 MATLAB 格式的 .mat 文件时,默认情况下不会自动创建不存在的文件路径。如果指定的文件路径不存在,函数会引发一个错误。 + + 因此需要在使用scipy.io.savemat前确保文件存在 +""" + + +# 创建了一个变量x,并赋予一个矩阵 +sio.savemat('data/testpython2.mat', {'x': [[1, 3, 5, 4], [5, 3, 2, 8]]}) + +# 读取“testpython.mat”文件内容并赋值给data变量 data = sio.loadmat('data/testpython.mat') +# 同上 data2 = sio.loadmat('data/testpython2.mat') -x=np.zeros([1,4]) + + +# 创建一个内值全为零的数组变量x +x = np.zeros([1, 4]) +""" +np.zeros()是NumPy提供的一个函数,用于创建一个包含零值的数组。 +[1, 4]是传递给np.zeros()函数的参数,它指定了要创建的数组的形状。在这个例子中,它是一个包含1行和4列的数组。 +""" + +# 分别对x变量数组内的各值进行赋值 x[0][0] = data['a'] x[0][1] = data['b'] x[0][2] = data['c'] x[0][3] = data['d'] -y=data2['x'] -print(x,x.dtype,y[0],y[0].dtype) +y = data2['x'] + +# 打印x及其数据类型,以及y矩阵中第一行的内容及其数据类型 +print(x, f"x的数据类型为{x.dtype}", y[0], f"y中第一列的数据类型为{y[0].dtype}") + +# 初始化一个图形对象,然后可以在该图形上绘制不同的图表或子图。 fig = plt.figure() + +# 在fig上创建一个带有三维坐标系的子图 ax = fig.add_subplot(111, projection='3d') +""" +.add_subplot(111, projection='3d'):这是在图形对象 fig 中添加一个三维坐标系的子图的操作。 + +111:这个参数表示将图形分割成一个 1x1 的网格,并选择网格中的第一个位置。这意味着整个图形窗口只包含一个子图,占据整个窗口。 + +projection='3d':这个参数指定了子图的投影类型为三维坐标系(3D)。这意味着你可以在这个子图中绘制三维图表,例如三维散点图、曲面图等。 + +""" + +# 设定散点的xyz数据 xs = x ys = y[0] zs = y[1] + +# 画出对应位置的点 ax.scatter(xs, ys, zs, c='b', marker='o') + +# 给xyz轴加上标签 ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') + +# 显示图像 plt.show() -plt.close() \ No newline at end of file + +# 释放资源并清除图形 +plt.close() diff --git a/data/testpython.mat b/data/testpython.mat new file mode 100644 index 0000000000000000000000000000000000000000..c0ea583e6aa65e87004ebdcaf7a988c84cf79813 GIT binary patch literal 352 zcmeZu4DoSvQZUssQ1EpO(M`+DNmU5QNi0drFUqx2$ScuNa4t$sEJ;mK$j`G<2q{ff z@XIe#FtSiEw6HR;v@$YQFfuSQW*`qRdiwGKbs7LM8xV56GO$dCvY dX90_mqAv-m4`e1O`jVmgm`T)^0@cR?qyg1<7vlf` literal 0 HcmV?d00001 diff --git a/data/testpython2.mat b/data/testpython2.mat new file mode 100644 index 0000000000000000000000000000000000000000..3ec4b41932612d78eac8a2cb5c1e02486ebee9b6 GIT binary patch literal 216 zcmeZu4DoSvQZUssQ1EpO(M`+DNmU5QNi0drFUqx2$ScuNa4t$sEJ;mK$j`G<2q{ff z@XIe#FtSiEw6HR;v@$YQFfuSQW*`qRdiwGKbp`-28xV5q3! YSOKI#;tF6sgv|_OgD^-OrWT|R0KD!M%>V!Z literal 0 HcmV?d00001