matplotlib绘制一些简单的函数图像

1 绘制x 的平方

法1:

#y=x*x
import matplotlib.pyplot as plt
import numpy
#x轴
x = numpy.linspace(-10,10,200)
#y轴
y = [i**2 for i in x]

#绘制
plt.plot(x,y)
plt.show()

法2

#y=x*x
import matplotlib.pyplot as plt
import numpy
#x轴
x = numpy.linspace(-10,10,200)
# x.shape

y = []
for i in x:
    y_1 = i**2
    y.append(y_1)
plt.plot(x,y,label = "x*x")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

结果

matplotlib绘制一些简单的函数图像_第1张图片

2 绘制余弦函数cos(x)

import numpy as np
import matplotlib.pyplot as plt

#x轴
x = np.arange(-2*(np.pi),2*(np.pi),0.001)

#y轴 
y = np.cos(x)
plt.grid(linestyle=':')
plt.plot(x,y,label="cos")

plt.xlabel("x")
plt.ylabel("y")
plt.title("cos")
plt.legend()
plt.show()

结果matplotlib绘制一些简单的函数图像_第2张图片

3 绘制 cos(x)+cos(3x)函数

(3和4用jupyter notebook分段运行,查看结果)

import numpy as np
import matplotlib.pyplot as plt

#x轴
x = np.arange(-2*(np.pi),2*(np.pi),0.001)

#y轴 
y = np.cos(2*np.pi*50*x)+2*np.cos(2*np.pi*100*x)
           
           
plt.grid(linestyle=':')
           
plt.plot(x,y,label="cos(x)+cos(3x)")

plt.xlabel("x")
plt.ylabel("y")
plt.title("cos(x)+cos(3x)")
plt.legend()
plt.show()

4 对 cos(x)+cos(3x)做傅里叶变换,并转换,绘制其频谱图

import numpy.fft as fft
#经过傅里叶变换,找他的频谱图
complex_array = fft.fft(y)
print(complex_array.shape)
print(complex_array.dtype)  # complex128 
print(complex_array[1])

y_ifft = fft.ifft(complex_array)
plt.plot(x, y_ifft, label='y_ifft', color='orangered')
plt.xlabel("t(毫秒)")
plt.ylabel("y_ifft(t)幅值")
plt.title("ifft变换图")
plt.grid(linestyle=':')
plt.legend()
plt.show()
#fft频谱图
# 得到分解波的频率序列
#freqs = np.fft.fftfreq(采样数量, 采样周期)
freqs = fft.fftfreq(x.size,0.001)
#当采样周期=0.001时,采样频率为1000,正负对称,取正的一边,最大为500Hz
#当采样周期=0.0002时,采样频率为5000,正负对称,取正的一边,最大为2500Hz,这个最后提取的两个频率不是50和100,有影响,还不知道真正含义。
#freqs = fft.fftfreq(x.size, 0.0002)
# 复数的模为信号的振幅(能量大小)
pows = np.abs(complex_array)
plt.title('FFT变换,频谱图')
plt.xlabel('Frequency 频率')
plt.ylabel('Power 功率')
plt.tick_params(labelsize=10)
plt.grid(linestyle=':')
plt.plot(freqs[freqs > 0], pows[freqs > 0], c='orangered', label='Frequency')
plt.legend()
plt.tight_layout()
plt.show()

频谱图

matplotlib绘制一些简单的函数图像_第3张图片

你可能感兴趣的:(matplotlib绘图,python,机器学习,matplotlib)