计算机网络(第十二题)

182 阅读2分钟

带宽 复合信号包含的频率范围称为带宽 bandwidth 。带宽通常是两个数(信号最高频率和最低频率)的差值。例如,如果一个复合信号包含 1000到 5000的频率,它的带宽就是 5000−1000=4000 。因此,两个频率不同的简单正弦波(简单信号)的带宽是相同的,都为零。

下图给出了两个复合信号,说明了它们的带宽,一个是周期信号而另一个是非周期信号。周期信号的带宽包含 1000∼5000 之间(1000、1001、1002、…)的所有整数频率。非周期信号的带宽有相同的范围,但频率是连续的。

【例3.10】如果一个周期信号分解为 5个正弦波信号,频率分别为 100 , 300 , 500 , 700 和 900 H z ,那么其带宽是多少?假定所有分量的最大振幅都为 10 V,试画出该信号的频谱。

请你举一个简单的代码示例。

根据例3.10的描述,我们已经知道这个周期信号由5个正弦波信号组成,频率分别为100 Hz,300 Hz,500 Hz,700 Hz和900 Hz。最大振幅为10 V。我们可以使用Python来计算带宽并绘制频谱图。

以下是一个简单的Python代码示例:

import numpy as np
import matplotlib.pyplot as plt

# 信号参数
frequencies = [100, 300, 500, 700, 900]  # 频率列表
amplitude = 10  # 最大振幅

# 计算带宽
min_frequency = min(frequencies)
max_frequency = max(frequencies)
bandwidth = max_frequency - min_frequency

print("带宽:", bandwidth, "Hz")

# 绘制频谱图
frequency_range = np.arange(min_frequency, max_frequency + 1)
spectrum = amplitude * np.isin(frequency_range, frequencies, assume_unique=True)

plt.stem(frequency_range, spectrum, use_line_collection=True)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('Frequency Spectrum')
plt.show()

执行这段代码后,你将看到输出带宽为800 Hz,并绘制出频谱图。频谱图上的峰值表示了信号在不同频率上的振幅,其中包括了100 Hz,300 Hz,500 Hz,700 Hz和900 Hz这5个频率分量。图形中的峰值与最大振幅(10V)相关联。

注意,为了绘制频谱图,代码使用了numpy库中的isin函数,该函数用于检查一个数组中的元素是否存在于另一个数组中。在这里,它被用来检查频率范围中的频率是否与给定的频率列表中的频率匹配,从而确定频谱图上的峰值位置。

解:设 f_h 为最高频率,f_l 为最低频率,B为带宽,则: B = f_h − f_l = 900 − 100 = 800 ( H z ) 频谱只有 5 个尖峰,分别位于 100 , 300 , 500 , 700和 900 H z的位置