正弦波的可视化
创作时间:
作者:
@小白创作中心
正弦波的可视化
引用
CSDN
1.
https://blog.csdn.net/flyfish1986/article/details/140172404
正弦波的可视化
波的基本概念
- 振幅 (Amplitude):波峰或波谷到参考线(零点)的垂直距离。
- 波峰 (Crest):波形的最高点。
- 波谷 (Trough):波形的最低点。
- 波长 (Wavelength):从一个波峰到下一个波峰的水平距离。
- 相位偏移 (Phase Shift):波形的横向位移量。
正弦波的数学公式
正弦波的通用公式为:
$$
y(t) = A \sin(2\pi f t + \phi)
$$
其中:
- $y(t)$:波在时间$t$时的振幅值。
- $A$:振幅(Amplitude),表示波的最大值。它决定了波形的高低程度。
- $2\pi f$:角频率(Angular frequency),其中$f$是频率(Frequency),单位是赫兹(Hz)。角频率表示波每秒内完成的周期数乘以$2\pi$。
- $t$:时间(Time),单位是秒(s)。
- $\phi$:相位(Phase),表示波形的水平偏移量,单位是弧度(radians)。相位决定了波形在时间轴上的起始点。
正弦波公式的不同表示法
正弦波的公式可以有不同的表示方式:
$$
y(t) = A \sin(\omega t \pm \theta)
$$
$$
y(t) = A \sin(2\pi f t + \phi)
$$
这两种表示法本质上描述的是相同的波形,只是使用了不同的符号来表示频率和相位。
假设我们有一个频率为 1 Hz 的正弦波,其振幅$A$为 1,相位$\phi$为$\pi/2$。在第一种表示法中:
$$
y(t) = 1 \sin(2\pi \cdot 1 \cdot t + \frac{\pi}{2})
$$
在第二种表示法中:
$$
y(t) = 1 \sin(\omega t + \phi)
$$
其中$\omega = 2\pi f = 2\pi \cdot 1 = 2\pi$,因此:
$$
y(t) = 1 \sin(2\pi t + \frac{\pi}{2})
$$
这两个公式描述的是完全相同的波形。
Python代码实现
下面的Python代码使用matplotlib库来绘制正弦波:
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()
通过上述代码,我们可以直观地看到正弦波的波形及其相位偏移的效果。
热门推荐
交强险电子保单如何查询?六个交强险电子保单常见问题
冬日邂逅“粉色精灵”:珠海长隆海洋王国的中华白海豚
职场焦虑爆棚?这16招让你秒变情绪主人!
从心理学到神经科学:焦虑症治疗的新突破
Steam上的治愈之旅:《Spiritfarer》与《星露谷物语》
免费心理小游戏:缓解焦虑的新选择
新款普拉多润滑系统保养秘籍
职场女性的低跟鞋指南:从选购到搭配
春季最火搭配:低跟鞋+半身裙,优雅舒适两不误
《篮球旋风》:那些年我们一起追过的篮球梦
虚拟电话与传统电话的区别(7方面不同特性和优势)
治疗甲状腺结节的中药方子有哪些
杨绛先生送给世人的3条处世哲学,字字玑珠,发人深省
黄河一号旅游公路:山西最美冬季自驾游
大众点评“必玩榜”揭晓:山西29处景点上榜,五台山、云冈石窟成深度游必打卡地
郑洛汴三日深度游:穿越千年的文化之旅
三日游打卡必去!桂林阳朔、上海外滩、乌镇西栅
谢霆锋短剧专辑有哪些@待嫁十年电视剧
充值易退费难,网络游戏是如何“收割”未成年人的?
白雪石:用青绿山水描绘新时代
《江雪》与《别董大》:古诗里的两种雪景意境
从“床上练军姿”看张晚意:一个演员的自我修养
从“待爆帝”到“贷爆帝”:张晚意的演艺之路
张晚意春晚再现《觉醒年代》经典,新剧《锦绣安宁》引期待
天津职师大就业率爆表!区域经济起飞?
新款普拉多越野驾驶秘籍大揭秘
紫霞湾:北海最美日落打卡点!
涠洲岛最美日落打卡攻略:滴水丹屏、石螺口海滩拍摄全指南
《篮球旋风》第二季:热血青春与团队力量
《篮球旋风》VS《灌篮高手》:两部动画,一个篮球梦