硬汉嵌入式论坛

 找回密码
 立即注册
查看: 868|回复: 2
收起左侧

[DSP] fir按DSP教程导入MATLAB报FIR1出错

[复制链接]

3

主题

27

回帖

36

积分

新手上路

积分
36
发表于 2022-6-11 20:46:21 | 显示全部楼层 |阅读模式
fs=1000; %设置采样频率 1k
N=1024; %采样点数
n=0:N-1;
t=0:1/fs:1-1/fs; %时间序列
f=n*fs/N; %频率序列
Signal_Original=sin(2*pi*50*t); %信号 50Hz 正弦波
Signal_Noise=sin(2*pi*200*t); %噪声 200Hz 正弦波
Mix_Signal=Signal_Original+Signal_Noise; %将信号 Signal_Original 和 Signal_Original 合成一个信号进行采样
subplot(221);
plot(t, Mix_Signal); %绘制信号 Mix_Signal 的波形
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;
subplot(222);
y=fft(Mix_Signal, N); %对信号 Mix_Signal 做 FFT
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号 FFT');
grid on;
b = fir1(30,125); %30 阶 FIR 低通滤波器,截止频率 125Hz------------------------------注原来是0.25
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x); %经过 FIR 滤波器后得到的信号
Ps=sum(Signal_Original.^2); %信号的总功率
Pu=sum((y2-Signal_Original).^2); %剩余噪声的功率
SNR=10*log10(Ps/Pu); %信噪比
y3=fft(y2, N); %经过 FIR 滤波器后得到的信号做 FFT
subplot(223);
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号 FFT');
grid on;
[H,F]=freqz(b,1,512); %通过 fir1 设计的 FIR 系统的频率响应
subplot(224);
plot(F/pi,abs(H)); %绘制幅频响应
xlabel('归一化频率');
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;
出错 fir1 (line 22)
b = fir1(30,125); %30 阶 FIR 低通滤波器,截止频率 125Hz


回复

使用道具 举报

3

主题

27

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2022-6-11 22:38:20 | 显示全部楼层
找到原因了 不能把文件名命名为FIR1 不然报错 但在y2=filtfilt(b,1,x); 这句又报错了。
回复

使用道具 举报

3

主题

27

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2022-6-11 22:43:34 | 显示全部楼层
注意  y2=filtfilt(b,1,x)  x应当是Mix_Signal
改成y2=filtfilt(b,1,Mix_Signal)  就OK 了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-24 20:59 , Processed in 0.154331 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表