在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设计滤波器导出相关推荐

  1. matlab mat文件 太大,MATLAB .mat文件中的开销过大

    这对我来说似乎是个错误.解决方法是以块的形式写入预分配的数组. 从预先分配开始: fid = fopen('01_hit12.par', 'r'); data = fread(fid, inf, 'u ...

  2. MATLAB MAT文件

    MAT文件 是MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据 ...

  3. CSI数据dat文件转换mat文件问题(matlab、python数据处理)

    用intel5300网卡提取csi数据,得到的数据是dat文件,我们在数据处理时一般先将dat文件转换成mat文件. 将dat文件转换成mat文件,可以根据matlab版本和数据量大小选择mat fi ...

  4. matlab mat文件读取和调用

    13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开. 13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要 ...

  5. matlab读文件函数程序,Matlab 文件读写函数

    MATLAB中的文件 m文件: 命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件.包含matlab语言代码的文件称为m文件,其扩展名为m. 用户如想灵活应用matlab去 ...

  6. matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具

    matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具 源码可见,解密P ID:22600679158222577美丽小飞侠大队

  7. matlab mat文件

    如果想在matlab关闭后变量的值依然存在,就需要将变量保存在文件里,这里将变量保存为mat文件. (1)将数组保存到mat文件 matrix1=magic(4); save('matrix1.mat ...

  8. MATLAB——MAT文件

    MATLAB中的.mat文件是什么?如何生成?如何打开? (1).mat文件是什么 .mat是matlab的数据存储的标准格式,mat文件是标准的二进制文件,还可以以ASCII码的形式保存和加载.可以 ...

  9. matlab.mat文件读取,matlab中mat文件的生成和读取

    1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...

最新文章

  1. 有存款,才能过得更踏实
  2. c语言中小数乘法怎样写程序,四年级下册lbrack;小数乘法rsqb;知识点归纳
  3. 世界隐形冠军比拼:德国1307家、美国366家、中国68家
  4. java环形数组_Java数组模拟环形队列
  5. 新冠肺炎疫情预测与防控策略评价
  6. JXLS 2.4.0系列教程(四)——拾遗 如何做页面小计
  7. 课程分类管理-添加课程分类
  8. Win32ASM学习[23]:RadASM快捷键
  9. 今天微信没有520红包 大家可以放心了!
  10. Maven生命周期详解及常用命令
  11. kubernetes 集群管理平台
  12. 烧写嵌入式linux,嵌入式linux系统烧写
  13. 漫谈CRM体系化建设3:如何留住客户
  14. 【蓝队攻防演练思路】From 滴滴蓝军
  15. 浏览器 主页 被篡改 ,怎么都修改不回来(包括 Firefox ,google Chrome) KMS激活问题
  16. 老男孩第58期马帅琦
  17. 生活杂感: 理性与感性
  18. iOS 9 App Search教程
  19. 电路习题解答 第四章 4-9、4-10
  20. 医院信息化升级,一步到位?教你一招

热门文章

  1. 某游戏社区App | So层逆向分析
  2. SOLIDWORKS Simulation h-自适应方法的应用
  3. python抖音表白软件_Python实现爆火抖音的弹窗表白软件
  4. 云与海计算机谱,天谕乐谱代码云与海-天谕手游云与海乐谱代码分享-沧浪手游...
  5. linux非root用户安装jdk1.8
  6. 宾夕法尼亚大学计算机专业研究生,宾夕法尼亚大学UPenn计算机科学Computer Science专业排名第32位(2021年THE世界大学商科排名)...
  7. 如何在Python中实现矩阵分析
  8. JavaScript执行堆栈
  9. Springboot mavne项目多模块打包,报错 找不到 base包,找不到common类等等
  10. 联联周边游系统开发源码及搭建