matlab mat文件转fcf,Matlab的FDATool设计滤波器导出
在LZ给出的SOS matrix和Scale Factors参数中已包含有滤波器的信息。这里给出2种方法形成滤波器参数,这是一个18阶的IIR滤波器,一种是分解成9个2阶IIR滤波器串接,另一种是18阶IIR滤波器:
SOS=[1 -1.753478595924798 1 1 -1.715929423633677 0.989596471431086;...
1 -1.753478595924798 1 1 -1.770907559180061 0.990608353245765;...
1 -1.753478595924798 1 1 -1.702996452119821 0.970500292633477;...
1 -1.753478595924798 1 1 -1.752339882018184 0.973017861982348;...
1 -1.753478595924798 1 1 -1.696640367244520 0.955631016351785;...
1 -1.753478595924798 1 1 -1.733851156227253 0.958455470476445;...
1 -1.753478595924798 1 1 -1.697331544768989 0.946633764727194;...
1 -1.753478595924798 1 1 -1.717331241642967 0.948461822736893;...
1 -1.753478595924798 1 1 -1.704617601062175 0.944269642097509];
Sv=[0.994654917981474
0.994654917981474
0.985575452484598
0.985575452484598
0.978354972045005
0.978354972045005
0.973726850565062
0.973726850565062
0.972134821048755
1.000000000000000];
Tdb=zeros(1,501);
for k=1: 9
B(k,1:3)=SOS(k,1:3)*Sv(k);;
A(k,1:3)=SOS(k,4:6);
[db, mag, pha, w]=freqz_m1(B(k,:),A(k,:));
DB(k,:)=db;
Tdb=Tdb+db;
end
b0=Sv(10);
Tdb=Tdb+20*log10(b0);
figure
plot(w/pi*50,Tdb); grid; axis([0 30 -400 5]);
xlabel('Frequency (kHz)'); ylabel('Magnitude (dB)');
fprintf('B=\n');
for k=1 : 9
fprintf('%4d %5.6f %5.6f %5.6f\n',k,B(k,:));
end
fprintf('\n\n');
fprintf('A=\n');
for k=1 : 9
fprintf('%4d %5.6f %5.6f %5.6f\n',k,A(k,:));
end
fprintf('\n\n');
[b, a]=cas2dir(b0, B, A);
figure
[db, mag, pha, w]=freqz_m1(b,a);
plot(w/pi*50,db); grid; axis([0 30 -400 5]);
xlabel('Frequency (kHz)'); ylabel('Magnitude (dB)');
fprintf('b=\n');
fprintf('%5.6f %5.6f %5.6f %5.6f %5.6f\n',b)
fprintf('\n\n');
fprintf('a=\n');
fprintf('%5.6f %5.6f %5.6f %5.6f %5.6f\n',a)
fprintf('\n\n');
其中用到freqz_m1为
function [db, mag, pha, w]=freqz_m1(b,a);
%Modified version of freqz subroutine
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:501))'; w=(w(1:501))';
mag=abs(H);
db=20*log10(mag+eps);
pha=angle(H);
9个2阶IIR滤波器串接和18阶IIR滤波器的响应图如下,它们的参数为:
B=
1 0.994655 -1.744106 0.994655
2 0.994655 -1.744106 0.994655
3 0.985575 -1.728185 0.985575
4 0.985575 -1.728185 0.985575
5 0.978355 -1.715525 0.978355
6 0.978355 -1.715525 0.978355
7 0.973727 -1.707409 0.973727
8 0.973727 -1.707409 0.973727
9 0.972135 -1.704618 0.972135
A=
1 1.000000 -1.715929 0.989596
2 1.000000 -1.770908 0.990608
3 1.000000 -1.702996 0.970500
4 1.000000 -1.752340 0.973018
5 1.000000 -1.696640 0.955631
6 1.000000 -1.733851 0.958455
7 1.000000 -1.697332 0.946634
8 1.000000 -1.717331 0.948462
9 1.000000 -1.704618 0.944270
b=
0.847849 -13.380160 101.477935 -491.012808 1697.382412
-4449.362152 9161.799827 -15148.109667 20383.171259 -22485.628984
20383.171259 -15148.109667 9161.799827 -4449.362152 1697.382412
-491.012808 101.477935 -13.380160 0.847849
a=
1.000000 -15.491945 115.341293 -547.875022 1859.309795
-4784.778030 9672.660185 -15701.246921 20742.817747 -22466.281798
19995.763845 -14590.650556 8664.764207 -4131.835186 1547.759375
-439.646743 89.223268 -11.552358 0.718847
从图上可以看出9个2阶IIR滤波器串接的响应曲线要比18阶IIR滤波器的响应曲线好,这是因为18阶IIR滤波器对系数的精度和计算的精度都有更高的要求,而在PC机中的双精度已不能满足其要求,而产生的误差造成的。
[本帖最后由 songzy41 于 2009-6-20 06:42 编辑]
qz33a.jpg
(32.72 KB, 下载次数: 5)
2009-6-20 06:40 上传
9个2阶IIR滤波器串接的响应曲线
qz33b.jpg
(33.04 KB, 下载次数: 0)
2009-6-20 06:40 上传
18阶IIR滤波器的响应曲线
matlab mat文件转fcf,Matlab的FDATool设计滤波器导出相关推荐
- matlab mat文件 太大,MATLAB .mat文件中的开销过大
这对我来说似乎是个错误.解决方法是以块的形式写入预分配的数组. 从预先分配开始: fid = fopen('01_hit12.par', 'r'); data = fread(fid, inf, 'u ...
- MATLAB MAT文件
MAT文件 是MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据 ...
- CSI数据dat文件转换mat文件问题(matlab、python数据处理)
用intel5300网卡提取csi数据,得到的数据是dat文件,我们在数据处理时一般先将dat文件转换成mat文件. 将dat文件转换成mat文件,可以根据matlab版本和数据量大小选择mat fi ...
- matlab mat文件读取和调用
13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开. 13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要 ...
- matlab读文件函数程序,Matlab 文件读写函数
MATLAB中的文件 m文件: 命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件.包含matlab语言代码的文件称为m文件,其扩展名为m. 用户如想灵活应用matlab去 ...
- matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具
matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具 源码可见,解密P ID:22600679158222577美丽小飞侠大队
- matlab mat文件
如果想在matlab关闭后变量的值依然存在,就需要将变量保存在文件里,这里将变量保存为mat文件. (1)将数组保存到mat文件 matrix1=magic(4); save('matrix1.mat ...
- MATLAB——MAT文件
MATLAB中的.mat文件是什么?如何生成?如何打开? (1).mat文件是什么 .mat是matlab的数据存储的标准格式,mat文件是标准的二进制文件,还可以以ASCII码的形式保存和加载.可以 ...
- matlab.mat文件读取,matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
最新文章
- 有存款,才能过得更踏实
- c语言中小数乘法怎样写程序,四年级下册lbrack;小数乘法rsqb;知识点归纳
- 世界隐形冠军比拼:德国1307家、美国366家、中国68家
- java环形数组_Java数组模拟环形队列
- 新冠肺炎疫情预测与防控策略评价
- JXLS 2.4.0系列教程(四)——拾遗 如何做页面小计
- 课程分类管理-添加课程分类
- Win32ASM学习[23]:RadASM快捷键
- 今天微信没有520红包 大家可以放心了!
- Maven生命周期详解及常用命令
- kubernetes 集群管理平台
- 烧写嵌入式linux,嵌入式linux系统烧写
- 漫谈CRM体系化建设3:如何留住客户
- 【蓝队攻防演练思路】From 滴滴蓝军
- 浏览器 主页 被篡改 ,怎么都修改不回来(包括 Firefox ,google Chrome) KMS激活问题
- 老男孩第58期马帅琦
- 生活杂感: 理性与感性
- iOS 9 App Search教程
- 电路习题解答 第四章 4-9、4-10
- 医院信息化升级,一步到位?教你一招
热门文章
- 某游戏社区App | So层逆向分析
- SOLIDWORKS Simulation h-自适应方法的应用
- python抖音表白软件_Python实现爆火抖音的弹窗表白软件
- 云与海计算机谱,天谕乐谱代码云与海-天谕手游云与海乐谱代码分享-沧浪手游...
- linux非root用户安装jdk1.8
- 宾夕法尼亚大学计算机专业研究生,宾夕法尼亚大学UPenn计算机科学Computer Science专业排名第32位(2021年THE世界大学商科排名)...
- 如何在Python中实现矩阵分析
- JavaScript执行堆栈
- Springboot mavne项目多模块打包,报错 找不到 base包,找不到common类等等
- 联联周边游系统开发源码及搭建