正弦波的可视化

正弦波的可视化

flyfish

在这里插入图片描述

正弦波

在这里插入图片描述振幅 (Amplitude): 波峰或波谷到参考线(零点)的垂直距离。
波峰 (Crest): 波形的最高点。
波谷 (Trough): 波形的最低点。
波长 (Wavelength): 从一个波峰到下一个波峰的水平距离。
相位偏移 (Phase Shift): 波形的横向位移量
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

正弦波公式

y ( t ) = A sin ⁡ ( 2 π f t + ϕ ) y(t) = A \sin(2\pi f t + \phi) y(t)=Asin(2πft+ϕ)

解释

  • y ( t ) y(t) y(t) :波在时间 t t t 时的振幅值。

  • A A A :振幅(Amplitude),表示波的最大值。它决定了波形的高低程度。

  • 2 π f 2\pi f 2πf :角频率(Angular frequency),其中 f f f 是频率(Frequency),单位是赫兹(Hz)。角频率表示波每秒内完成的周期数乘以 2 π 2\pi 2π

  • t t t :时间(Time),单位是秒(s)。

  • ϕ \phi ϕ :相位(Phase),表示波形的水平偏移量,单位是弧度(radians)。相位决定了波形在时间轴上的起始点。

正弦波其他公式对比

y ( t ) = A sin ⁡ ( ω t ± θ ) y(t) = A \sin(\omega t \pm \theta) y(t)=Asin(ωt±θ)
y ( t ) = A sin ⁡ ( 2 π f t + ϕ ) y(t) = A \sin(2\pi f t + \phi) y(t)=Asin(2πft+ϕ)

使用了不同的表示法来描述波的频率和相位
在这里插入图片描述
假设我们有一个频率为 1 Hz 的正弦波,其振幅 A A A 为 1,相位 ϕ \phi ϕ π / 2 \pi/2 π/2。在第一种表示法中:
y ( t ) = 1 sin ⁡ ( 2 π ⋅ 1 ⋅ t + π 2 ) y(t) = 1 \sin(2\pi \cdot 1 \cdot t + \frac{\pi}{2}) y(t)=1sin(2π1t+2π)在第二种表示法中:
y ( t ) = 1 sin ⁡ ( ω t + ϕ ) y(t) = 1 \sin(\omega t + \phi) y(t)=1sin(ωt+ϕ)
其中 ω = 2 π f = 2 π ⋅ 1 = 2 π \omega = 2\pi f = 2\pi \cdot 1 = 2\pi ω=2πf=2π1=2π,因此:
y ( t ) = 1 sin ⁡ ( 2 π t + π 2 ) y(t) = 1 \sin(2\pi t + \frac{\pi}{2}) y(t)=1sin(2πt+2π)
这两个公式描述的是完全相同的波形。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 定义时间范围
t = np.linspace(0, 1, 1000)  # 1秒的时间范围

# 定义参数
A = 1        # 振幅
f = 1        # 频率,1 Hz
omega = 2 * np.pi * f  # 角频率
phi = np.pi / 2  # 相位

# 计算波形
y1 = A * np.sin(omega * t + phi)
y2 = A * np.sin(2 * np.pi * f * t + phi)

# 绘制波形
plt.figure(figsize=(10, 6))
plt.plot(t, y1, label='$y(t) = A \sin(\omega t + \phi)$')
plt.plot(t, y2, linestyle='--', label='$y(t) = A \sin(2\pi f t + \phi)$')
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.title('正弦波的两种表示法')
plt.xlabel('时间 $t$')
plt.ylabel('振幅 $y(t)$')
plt.legend()
plt.grid(True)
plt.show()

可视化

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 定义正弦波函数
def sine_wave(t, A=1, f=1, phi=0):
    return A * np.sin(2 * np.pi * f * t + phi)

# 时间范围
t = np.linspace(0, 2, 1000)  # 2秒的时间范围

# 参数设置
A = 1         # 振幅
f = 1         # 频率,1 Hz
phi = np.pi / 4  # 相位,π/4 弧度

# 计算波形
y_no_phase = sine_wave(t, A, f, 0)  # 没有相位偏移
y_with_phase = sine_wave(t, A, f, phi)  # 有相位偏移

# 计算波峰和波谷位置
crest_pos = 1 / (4 * f)
trough_pos = 3 / (4 * f)

# 绘制波形
plt.figure(figsize=(12, 8))

# 绘制没有相位偏移的波形
plt.plot(t, y_no_phase, label='$y(t) = A \sin(2\pi f t)$')

# 绘制有相位偏移的波形
plt.plot(t, y_with_phase, linestyle='--', label='$y(t) = A \sin(2\pi f t + \phi)$')

# 标示相位
plt.axvline(x=0, color='black', linewidth=0.5)
plt.axhline(y=0, color='black', linewidth=0.5)
plt.scatter([0, -phi / (2 * np.pi * f)], [0, 0], color='red', label='相位偏移点')  # 相位偏移点
plt.text(-phi / (2 * np.pi * f) - 0.05, 0.1, r'$-\frac{\phi}{2\pi f}$', color='red', fontsize=12, ha='center')

# 标示波峰、波谷
plt.scatter([crest_pos, trough_pos], [A, -A], color='blue')  # 波峰和波谷
plt.text(crest_pos, A + 0.1, '波峰', color='blue', fontsize=12, ha='center')
plt.text(trough_pos, -A - 0.2, '波谷', color='blue', fontsize=12, ha='center')

plt.text(1/f, -1.5, '$\lambda$', color='purple', fontsize=12, ha='center')

plt.title('正弦波及其相位偏移')
plt.xlabel('时间 $t$')
plt.ylabel('振幅 $y(t)$')
plt.legend()
plt.grid(True)
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二分掌柜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值