matlab代码:生成幅值小于0.1,频率范围为100~1000Hz的白噪声,并通过粉红滤波器生成粉红噪声,绘制出白噪声和粉红噪声的频谱
时间: 2024-04-14 15:26:28 浏览: 106
产生白噪声的matlab代码
以下是在MATLAB中生成幅值小于0.1,频率范围为100~1000Hz的白噪声,并通过粉红滤波器生成粉红噪声,并绘制它们的频谱的示例代码:
```matlab
% 生成白噪声信号
duration = 1.0; % 信号时长(秒)
fs = 44100; % 采样率(Hz)
samples = round(fs * duration);
white_noise = randn(samples, 1);
% 计算白噪声的频谱
figure;
spectrogram(white_noise, hamming(256), 128, [], fs, 'yaxis');
title('White Noise Spectrogram');
% 通过粉红滤波器生成粉红噪声
pink_noise = filter(1, [1, -0.5], white_noise);
% 计算粉红噪声的频谱
figure;
spectrogram(pink_noise, hamming(256), 128, [], fs, 'yaxis');
title('Pink Noise Spectrogram');
```
代码中使用了MATLAB中的`spectrogram`函数来绘制频谱图,通过调整窗口大小和参数可以控制频谱的分辨率和显示方式。注意,粉红滤波器的差分方程为`H(z) = 1 / (1 - 0.5z^(-1))`,在代码中使用`filter`函数来实现滤波操作。
阅读全文