matlab,一阶RC高通滤波器,截止频率15.9khz,输入输出时域波形,频域波形,自相关函数,功率谱密度
时间: 2023-06-18 18:08:49 浏览: 202
首先,可以使用以下代码在 MATLAB 中创建一阶 RC 高通滤波器:
```matlab
R = 1000; % 电阻值为 1000 欧姆
C = 1e-9; % 电容值为 1 纳法
fc = 1/(2*pi*R*C); % 计算截止频率
num = [1, 0]; % 分子多项式
den = [1, 1/(2*pi*R*C)]; % 分母多项式
filter = tf(num, den); % 创建传递函数
```
接下来,可以使用以下代码生成输入信号并进行滤波:
```matlab
fs = 100e3; % 采样率为 100 kHz
t = 0:1/fs:1; % 生成时间向量
x = sin(2*pi*10e3*t) + sin(2*pi*50e3*t); % 生成输入信号
y = filter(x); % 对输入信号进行滤波
```
在时域中绘制输入输出波形:
```matlab
subplot(2,1,1);
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Input Signal');
subplot(2,1,2);
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Output Signal');
```
在频域中绘制输入输出波形:
```matlab
X = fft(x); % 对输入信号进行傅里叶变换
Y = fft(y); % 对输出信号进行傅里叶变换
f = linspace(0, fs/2, length(t)/2+1); % 生成频率向量
subplot(2,1,1);
plot(f, abs(X(1:length(t)/2+1)));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Input Signal');
subplot(2,1,2);
plot(f, abs(Y(1:length(t)/2+1)));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Output Signal');
```
计算自相关函数:
```matlab
Rxx = xcorr(x); % 计算输入信号的自相关函数
Ryy = xcorr(y); % 计算输出信号的自相关函数
tcorr = linspace(-length(t)+1, length(t)-1, 2*length(t)-1); % 生成时间偏移向量
subplot(2,1,1);
plot(tcorr, Rxx);
xlabel('Time Lag (samples)');
ylabel('Correlation');
title('Input Signal Autocorrelation');
subplot(2,1,2);
plot(tcorr, Ryy);
xlabel('Time Lag (samples)');
ylabel('Correlation');
title('Output Signal Autocorrelation');
```
计算功率谱密度:
```matlab
[Pxx, f] = pwelch(x, [], [], [], fs); % 计算输入信号的功率谱密度
[Pyy, f] = pwelch(y, [], [], [], fs); % 计算输出信号的功率谱密度
subplot(2,1,1);
plot(f, Pxx);
xlabel('Frequency (Hz)');
ylabel('Power');
title('Input Signal Power Spectral Density');
subplot(2,1,2);
plot(f, Pyy);
xlabel('Frequency (Hz)');
ylabel('Power');
title('Output Signal Power Spectral Density');
```
以上代码可以生成一阶 RC 高通滤波器的时域波形、频域波形、自相关函数和功率谱密度。需要注意的是,截止频率必须与采样率相匹配,否则会出现混叠现象。
阅读全文