matlab中fdatool使用说明

matlab中fdatool使用说明
matlab中fdatool使用说明

基于MATLAB的滤波器设计

由于MATLAB的广泛使用和功能的不断更新,基于MATLAB的滤波器设计方法以其方便快捷的特点,受到了设计者的欢迎。下面将举例说明基于MATLAB的FIR滤波器的设计。

1 基于FDATool的FIR滤波器设计

使用FDATool设计FIR滤波器的具体步骤如下:

1.1 滤波器指标

若需要设计一个16阶的FIR滤波器(h(0)=0),给定的参数如下:

(1) 低通滤波器

(2) 采样频率F S为48kHz,滤波器F C为10.8kHz

(3) 输入序列位宽为9位(最高位为符号位)

在此利用MATLAB来完成FIR滤波器系数的确定。

1.2 打开MATLAB的FDATool

MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。

单击MATLAB主窗口下方的“Start”按钮,如图B.1所示,选择菜单“ToolBox”→“Filter Design”→“Filter Design & Analysis Tool(FDATool)”命令,打开FDATool,如图B.2所示。

图B.1 FDATool的启动

图B.2 FDATool的主界面

另外,在MATLAB主命令窗口内键入“fdatool”,同样可打开FDATool程序界面。

1.3 选择Design Filter

FDATool界面左下侧排列了一组工具按钮,其功能分别如下所述:

●滤波器转换(TransForm Filter)

●设置量化参数(Set Quantization Parameters)

●实现模型(Realize Model)

●导入滤波器(Import Filter)

●多速率滤波器(Multirate Filter)

●零极点编辑器(Pole-zero Editor)

●设计滤波器(Design Filter)

选择其中的按钮,进入设计滤波器界面,进行下列选择,如图B.3所示。

图B.3 FDATool 设计FIR 滤波器

● 滤波器类型(Filer Type )为低通(Low Pass )

● 设计方法(Design Method )为FIR ,采用窗函数法(Window ) ● 滤波器阶数(Filter order )定制为15 ● 窗口类型为Kaiser ,Beta 为0.5 ● F S 为48kHz ,F C 为10.8kHz

最后单击Design Filter 图标,让MATLAB 计算FIR 滤波器系数并作相关分析。 其系统函数H(z)可用下式来表示:

H(z)=∑=-16

1k k k z b

显然上式可以写成:

H(z)=∑=--15

1

k k k

z b

z

即可以看成是一个15阶的FIR 滤波器的输出结果经过了一个单位延时单元1

-z ,所以在FDATool 中,把它看成15阶FIR 滤波器来计算参数。 1.4 滤波器分析

计算完FIR 滤波器系数以后,往往需要对设计好的FIR 滤波器进行相关的性能分析,以便了解该滤波器是否满足设计要求。分析操作步骤如下:

选择FDATool 的菜单“Analysis ”→“Magnitude Response ”,启动幅频响应分析如图B.4所示,x

图B.4 FIR滤波器幅频响应

在图的左侧列出了当前滤波器的相关信息:

●滤波器类型为Direct Form FIR(直接I型FIR滤波器)

●滤波器阶数为15

选择菜单“Analysis”→“Phase Response”,启动相频响应分析,如图B.5所示。由该图可以看

到设计的FIR滤波器在通带内其相位响应为线性的,即该滤波器是一个线性相位的滤波器。

图B.5 滤波器相频响应

图B.6显示了滤波器幅频特性与相频特性的比较,这可以通过菜单“Analysis”→“Magnitude and

Phase Response”来启动分析。

图B.6 滤波器幅频和相频响应

选择菜单“Analysis”→“Group Delay Response”,启动群时延分析。FDATool还提供了以下几种分析工具:

●群时延响应分析。

●冲激响应分析(Impulse Response),如图B.7所示。

●阶跃响应分析(Step Response),如图B.8所示。

●零极点图分析(Pole/Zero Plot),如图B.9所示。

图B.7 冲激响应

图B.8 阶跃响应

图B.9 零极点图

求出的FIR滤波器的系数可以通过选择菜单“Analysis”→“Filter Coefficients”来观察。如图B.10所示,图中列出了FDATool计算的15阶直接I型FIR滤波器的部分系数。

图B.10 滤波器系数

1.5 量化

可以看到,FDATool计算出的值是一个有符号的小数,如果建立的FIR滤波器模型需要一个整数作为滤波器系数,就必须进行量化,并对得到的系数进行归一化。为此,单击FDATool左下侧的工具按钮进行量化参数设置。量化参数有三种方式:双精度、单精度和定点。在使用定点量化前,必须确保MATLAB中已经安装定点工具箱并有相应的授权。

1.6 导出滤波器系数

为导出设计好的滤波器系数,选择FDATool菜单的“File”→“Export”命令,打开Export(导出)对话框,如图B.11所示。

图B.11 滤波器系数Export 对话框

在该窗口中,选择导出到工作区(Workplace )。这时滤波器系数就存入到一个一维变量Num 中了。不过这时Num 中的元素是以小数形式出现的:

Num=

Columns 1 through 9

-0.0369 0.0109 0.0558 0.0054 -0.0873 -0.0484 0.1805 0.4133 0.4133 Columns 10 through 16

0.1805 -0.0484 -0.0873 0.0054 0.0558 0.0109 -0.0369

2 基于MATLAB 内建函数的FIR 设计

在Matlab 中已经内建有各种滤波器的设计函数,可以直接在程序中调用,这里介绍其中几个函数。 2.1 fir1函数

功能:设计标准频率响应的基于窗函数的FIR 滤波器。 语法:b=fir1(n ,Wn);

b=fir1(n ,Wn ,‘ftytpe ’); b=fir1(n ,Wn ,Window);

b=fir1(n ,Wn ,‘ftype ’,Window);

说明:fir1函数可以实现加窗线形相位FIR 数字滤波器设计,它可以设计出标准的低通、高通、带通和带阻滤波器。

b=fir1(n ,Wn)可得到n 阶低通,截至频率为Wn 的汉明加窗线形相位FIR 滤波器,0≤Wn ≤1,Wn=1相当于0.5fs 。滤波器系数包含在b 中,可表示为

n Z n b z b b z b --++?++=)1()2()1()(1

当Wn=[W 1 W 2]时,fir1函数可得到带通滤波器,其通带为W 1<w <W 2。 当ftype=high 时,设计高通FIR 滤波器;当ftype=stop 时,设计带阻滤波器。

在设计高通和带阻滤波器时,由于对奇次阶的滤波器,其在Nyquist 频率处的频率响应为零,不

适合构成高通和带阻滤波器。因此fir1函数总是使用阶数为偶数的滤波器,当输入的阶数为奇数时,fir1函数会自动将阶数加1。

b=fir1(n,Wn,Window)利用参数Window来指定滤波器采用的窗函数类型。其默认值为汉明窗。

b=fir1(n,Wn,‘ftype’,Window)可利用ftype和Window参数,设计各种滤波器。

2.2 fir2函数

功能:设计任意频率响应的基于窗函数的FIR滤波器。

语法:b=fir2(n,f,m);

b=fir2(n,f,m,Window);

b=fir2(n,f,m,npt);

b=fir2(n,f,m,npt,window);

b=fir2(n,f,m,npt,lap);

b=fir2(n,f,m,npt,lap,Window);

说明:fir2函数可以用于设计有任意频率响应的加窗FIR滤波器,对标准的低通、带通、高通和带阻滤波器的设计可使用fir1函数。

b=fir2(n,f,m)可设计出一个n阶的FIR滤波器,其滤波器的频率特性由参数f和m决定。参数f为频率点矢量,且f∈[0,1],f=1对应于0.5fs。矢量f按升序排列,且第一个元素必须是0,最后一个必须为1,并可以包含重复的频率点。矢量m中包含了与f相对应的期望得到的滤波器的幅度。

b=fir2(n,f,m,Window)中用参数Window来指定使用的窗函数类型,默认值为汉明窗。

b=fir2(n,f,m,npt)中用参数npt来指定fir2函数对频率响应进行内插的点数。

b=fir2(n,f,m,npt,lap)中用参数lap来指定fir2在重复频率点附近插入的区域大小。

3 基于FDATool的HDL代码产生

在MATLAB 7 中,对数字滤波器的设计提供了与若干种现实方案的接口。此类接口提供MATLAB到设计工具的无缝连接,即MATLAB根据设计工具的文件格式,将包含滤波器设计参数的文件输出。设计工具导入该文件,并作为设计模块的一部分。在此类接口中包括与Xilinx公司和TI 公司的接口,还包括C头文件以及HDL代码。

与FDATool的启动类似,单击MATLAB主窗口下方的“Start”按钮,选择“ToolBox”→“Filter Design HDL coder”→“Filter Design & Analysis Tool(FDATool)”,打开FDATool。

根据上节相同的设计和分析步骤,对FIR滤波器进行分析和设计,在设计完毕之后,可以得到滤波器系数。此时就可以应用设计工具接口。

3.1 C语言头文件的产生

选择FDATool菜单的“Targets”→“Generate C Header”命令,打开产生C语言头文件的窗口,

如图B.12所示。

图B.12 产生C语言头文件

可以看到输出的头文件中,变量名和变量长度名可以自定义,变量输出的格式也有很多种可以选择。根据在FDATool量化时选用的量化方式,窗口中会显示推荐使用的输出格式。

产生的头文件内容如下:

/*

* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool

* Generated by MATLAB(R) 7.0

* Generate on:22-Dec-2005 11:42:24

*/

/*

* Discrete-Time FIR Filter (real)

*------------------------------------

* Filter Structure :Direct-Form FIR

* Filter Order :15

* Stable :Yes

* Linear Phase :Yes (Type 2)

*/

/* General type conversion for MATLAB generated C-code */

# include“tmwtypes.h”

/*

* Expected path to tmwtypes.h

const int BL = 16;

const real64_T B[16]={

-0.03687003131181, 0.01091744268631, 0.0558306521771, 0.005429393216792,

-0.08726921427845, -0.04839711653448, 0.1804973650249, 0.4133400743259

0.4133400743259, 0.1804973650249, -0.04839711653448, -0.08726921427845,

0.005429393216792, 0.0558306521771, 0.01091744268631, -0.03687003131181

};

3.2 Xilinx系数文件的产生

选择FDATool菜单的“Targets”→“Xilinx Coefficients(.COE)file”命令,MATLAB直接提示文件的保存位置,保存完毕之后另开一个窗口显示该文件的内容。典型的文件内容如下所示。

;

; XILINX CORE Generator(tm) Distributed Arithmetic FIR filter coefficient (.COE) File

; Generated by MATLAB (R) 7.0 and the Filter Design Toolbox 3.0.

;

; Generated on:22-Dec-2005 12:03:10

;

Radix = 16 ;

Coefficient_Width = 16 ;

CoefData = 0000,

079c,

05a2,

f90b,

f166,

0000,

2272,

4000,

4000,

2272,

0000,

f166,

f90b,

0000;

这些系数已经运用二进制补码对其进行了运算,所以可以表示成十六进制。

3.3 CCS接口

CCS(Code Composer Studio)是TI公司为其数字信号处理器开发的集成开发环境(IDE)。在HDL coder中,可以向CCS输出C语言头文件或者直接写入处理器的存储空间中,然后由CCS本身作进一步的处理。在此接口中,可以选择目标板和目标处理器的型号,在这里目标板的型号一般只能是TI公司提供的专用EVM板。上述型号必须手动输入。

选择FDATool菜单的“Targets”→“Code Composer Studio(R)IDE”命令,打开CCS接口。此接口的窗口如图B.13所示。

图B.13 CCS接口窗口

3.4 HDL语言的生成

选择FDATool菜单的“Targets”→“Generate HDL”命令,打开生成HDL源代码的窗口,该窗口如图B.14所示。

图B.14 生成HDL源代码的窗口

在生成HDL文件时,可以选择生成VHDL或是Verilog HDL。可以对时钟信号、复位信号、进程、构造体和实体的定义等等进行设置。最后可以选择文件输出的文件夹和文件名。

文件一般有如下内容和格式:

-- ----------------------------------------------------------

-- Module : filter

-- Generated by MATLAB(R) 7.0 and the Filter Design HDL Coder 1.0

-- Generated on : 2005-12-22 12:33:35

-- HDL Code

-- 此处显示滤波器特性以及输出HDL代码时的设置

------------------------------------------------------------------

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

USE IEEE.numeric_std.ALL;

ENTITY filter IS

PORT ( clk : IN std_logic;

clk_enable : IN std_logic;

reset : IN std_logic;

filter_in : IN std_logic_vector (15 DOWNTO 0) ; -- sfix16_En15

filter_out : OUT std_logic_vector (15 DOWNTO 0) --sfix16_En9

END filter;

---------------------------------------------------------------------

--Module Architecture : filter

---------------------------------------------------------------------

ARCHITECTURE rt1 OF filter IS

--局部函数

--类定义

TYPE delay_pipeline_type IS ARRAY (NATURAL range<>) OF signed (15 DOWNTO 0); --sfix16_En15

--定义常数

CONSTANT coeff1:signed(15 DOWNTO 0):=to_signed(0,16);--sfix16_En14

CONSTANT coeff2:signed(15 DOWNTO 0):=to_signed(1948,16);--sfix16_En14 CONSTANT coeff3:signed(15 DOWNTO 0):=to_signed(1442,16);--sfix16_En14 CONSTANT coeff4:signed(15 DOWNTO 0):=to_signed(-1781,16);--sfix16_En14 CONSTANT coeff1:signed(15 DOWNTO 0):=to_signed(0,16);--sfix16_En14

CONSTANT coeff2:signed(15 DOWNTO 0):=to_signed(1948,16);--sfix16_En14 CONSTANT coeff3:signed(15 DOWNTO 0):=to_signed(1442,16);--sfix16_En14 CONSTANT coeff4:signed(15 DOWNTO 0):=to_signed(-1781,16);--sfix16_En14 CONSTANT coeff5:signed(15 DOWNTO 0):=to_signed(-3738,16);--sfix16_En14 CONSTANT coeff6:signed(15 DOWNTO 0):=to_signed(0,16);--sfix16_En14

CONSTANT coeff7:signed(15 DOWNTO 0):=to_signed(8818,16);--sfix16_En14 CONSTANT coeff8:signed(15 DOWNTO 0):=to_signed(16384,16);--sfix16_En14 CONSTANT coeff9:signed(15 DOWNTO 0):=to_signed(16384,16);--sfix16_En14 CONSTANT coeff10:signed(15 DOWNTO 0):=to_signed(8818,16);--sfix16_En14 CONSTANT coeff11:signed(15 DOWNTO 0):=to_signed(0,16);--sfix16_En14 CONSTANT coeff12:signed(15DOWNTO 0):=to_signed(-3738,16);--sfix16_En14 CONSTANT coeff13:signed(15DOWNTO 0):=to_signed(-1781,16);--sfix16_En14 CONSTANT coeff14 :signed(15DOWNTO 0):=to_signed(1442,16);--sfix16_En14 CONSTANT coeff15:signed(15 DOWNTO 0):=to_signed(1948,16);--sfix16_En14 CONSTANT coeff16:signed(15 DOWNTO 0):=to_signed(0,16);--sfix16_En14

--信号

SIGNAL delay_pipeline :delay_pipeline_type (0 To 15);sfix16_En15

SIGNAL product14 :signed(31 DOWNTO 0);--Sfix32_En29 SIGNAL product13 :signed(31 DOWNTO 0);--Sfix32_En29 SIGNAL product12 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product10 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product9 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product8 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product7 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product5 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product4 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product3 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL product2 :signed(31 DOWNTO 0);-- Sfix32_En29 SIGNAL sum1 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp :signed(32 DOWNTO 0);--sfix33_En29 SIGNAL sum2 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_1 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum3 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_2 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum4 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_3 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum5 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_4 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum6 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_5 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum7 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_6 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum8 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_7 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum9 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_8 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum10 :signed(39 DOWNTO 0);--sfix40_En29 SIGNAL add_temp_9 :signed(40 DOWNTO 0);--sfix41_En29 SIGNAL sum11 :signed(39 DOWNTO 0);--sfix40_En29

SIGNAL output_typeconvert :signed (15 DOWNTO 0); -- Sfix16_EN9 SIGNAL output_register :signed (15 DOWNTO 0); -- Sfix16_EN9 BEGIN

--块声明

Delay_pipeline_process : PROCESS (clk , reset )

BEGIN

IF reset = ‘1’ THEN

d elay_pipeline(0 to 15 )<=(OTHERS=>(OTHERS=>’0’));

ELSIF clk’event AND clk = ‘1’ THEN

IF clk_enable=’1’ THEN

delay_pipeline(0)<=signed(fliter_in);

delay_pipeline(1 to 15 )<=delay_pipeline(0 to 14) ;

END IF ;

END IF ;

END PROCESS Delay_pipeline_process;

Product15 <= delay_pipeline(14) * coeff15 ;

Product14 <= delay_pipeline(13) * coeff14 ;

Product13 <= delay_pipeline(12) * coeff13 ;

Product12 <= delay_pipeline(11) * coeff12 ;

Product10 <= delay_pipeline(9) * coeff10;

Product9 <= resize(delay_pipeline(8)(15 DOWNTO 0) & “ 00000000000000”,32); Product8 <= resize(delay_pipeline(7)(15 DOWNTO 0) & “ 00000000000000”,32); Product7 <= delay_pipeline(6) * coeff7;

Product5 <= delay_pipeline(4) * coeff5 ;

Product4<= delay_pipeline(3) * coeff4 ;

Product3 <= delay_pipeline(2) * coeff3 ;

Product2 <= delay_pipeline(1) * coeff2 ;

add_temp<=resize(product2 ,33) +resize(product3,33);

Sum1<=resize(add_temp,40);

add_temp_1<=resize(sum1 ,41) +resize(product4,41);

Sum2<= add_temp_1 (39 DOWNTO 0);

add_temp_2<=resize(sum2 ,41) +resize(product5,41);

add_temp_3<=resize(sum3 ,41) +resize(product7,41);

Sum4<= add_temp_3 (39 DOWNTO 0);

add_temp_4<=resize(sum4 ,41) +resize(product8,41);

Sum5<= add_temp_4 (39 DOWNTO 0);

add_temp_5<=resize(sum5 ,41) +resize(product9,41);

Sum6<= add_temp_5 (39 DOWNTO 0);

add_temp_6<=resize(sum6 ,41) +resize(product10,41);

Sum7<= add_temp_6 (39 DOWNTO 0);

add_temp_7<=resize(sum7 ,41) +resize(product12,41);

Sum8<= add_temp_7(39 DOWNTO 0);

add_temp_8<=resize(sum8 ,41) +resize(product13,41);

Sum9<= add_temp_8 (39 DOWNTO 0);

add_temp_9<=resize(sum9 ,41) +resize(product14,41);

Sum10<= add_temp_9 (39 DOWNTO 0);

add_temp_10<=resize(sum10 ,41) +resize(product15,41);

Sum11<= add_temp_10 (39 DOWNTO 0);

o utput_typeconvert<=resize(shift_right(sum11(35 DOWNTO 0)+(“0”& (sum11 (20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20) & NOT sum11(20))),20 ) ,16);

Output_Register_process : PROCESS (clk ,reset)

BEGIN

IF reset =’1’ THEN

Output_register<=(OTHERS=>’0’);

ELSIF clk’event AND clk =‘1’THEN

IF clk_enable = ‘1’ THEN

Output_register<=output_typeconvert;

END IF;

END IF;

END PROCESS Output_Register_process;

--任务声明

END rtl;

与此同时,还会生成一个所谓test bench文件,产生用于检验滤波器响应的测试向量。

实验3: 设计FIR(有限冲激响应)滤波器

针对Spartan-3E 开发套件

介绍

在这个实验里, 将向你展示通过系统发生器的FIR 和FDATool模块来指定、模拟和实现FIR滤波器的方法.

FDATool 模块被用来定义滤波器的阶数和系数, FIR模块被用作Simulink 模拟以及在FPGA中用Xilinx ISE来实现设计.你也可以通过实际硬件来运行它以验证这个设计的功能.

注意:在c:\xup\dsp_flow\labs\labsolutions\lab3\ 目录下有完整的例子.

目标

在完成这个试验后, 你将能够:

?用FDATool 模块输入你的滤波器指数,在设计中使用产生的系统或把它储存在工作区

?使用具有FDATool 模块产生的系数的FIR模块, 并在Simulink中运行bit-true 仿真

?产生设计并用Resource Estimator 模块和post-map 报告估计资源利用量

设计描述

你是Cyberdyne系统的一个dsp设计者. 你的公司正在调查用数字滤波器代替安防检测器中的模拟滤波器,以尝

试提高性能和降低整个系统的成本. 这将使贵公司可以进一步渗入日益增长的安防市场. 一个单频取样滤波器设

计如下:

?Sampling Frequency (Fs)(采样频率)= 1.5 MHz

?Fstop 1 = 270 kHz

?Fpass 1 = 300 kHz

?Fpass 2 = 450 khz

?Fstop 2 = 480 kHz

?Attenuation on both sides of the passband(双边通频带衰减)= 54 dB

?Pass band ripple(通频带脉动)= 1

因为灵活性和上市时间的原因,Cyberdyne已经选择FPGA来实现它. 你的HDL设计经验是有限的. 因为你对

MathWorks的产品比较熟悉,所以System Generator for DSP会是一个在FPGA中实现滤波器的优秀解决方案.

你的经理Miles Booth 已经要求你创建一个在即将完成的Spartan-3E? 原型板上实现的滤波器的原型. 这个原

型必须尽可能快地完成,这是因为Aggressive Security会议即将来临, 这个会议是业界今年最大的会议,我们不

能错过它.

你的经理已经提供了具有输入源和输出接收端的最初模型. 你的设计必须用随机输入源和来自DSP Blockset的

chirp信号来仿真. 为分析滤波器的输出, 输入和输出信号在频谱示波器中显示. 频谱示波器用来比较在FPGA

两个不同的输入源用来仿真这个滤波器:

? chirp 信号模块, 其扫描频率为 6 KHz 到 10 KHz ,不管其瞬时输出频率

? 随机信号源发生器, 它输出范围在-1.9到1.9的均匀分布的随机信号. 因为均匀信号是有界的,它是驱动定点

滤波器的较好的选择.

设计流程

这个试验由六个主要步骤组成. 在步骤1,你将用系统发生器的FDA Tool 模块来产生指定FIR 滤波器的系数. 在步骤2, 你将把这个系数与 FIR filter 模块联系起来. 步骤3要求你用两个已提供的输入源仿真这个设计并分析系数和输入信号宽度变化的影响. 在步骤4, 你将要添加一个转换模块以调整输出宽度,添加一个延时模块以提高效率,添加一个资源估计模块以估计资源占用量,从而完成整个设计. 在下一步将实现这个设计. 在每一步总的指示下面, 你会发现手把手的说明和图表,指

出了实现总的指示的更多细节. 如果你对个别指导有信心, 可以略过手把手的说明,跳到下一步的总指示.

注意: 如果你当时不能完成这个实验, 你可以从Xilinx 大学计划网站 https://www.360docs.net/doc/6213849978.html, 下载实验文件

产生FIR 滤波器所需的系数

步骤 1

实验总流程:

从 Xilinx Blockset → DSP blockset 中添加

FDATool 模块到包含一个 DA FIR 滤波器的设计中. 按照下列要求用FDATool 模块产生FIR 滤波器的系数

? Sampling Frequency (Fs) (采样频率) = 1.5 MHz ? Fstop 1 = 270 KHz ? Fpass 1 = 300 KHz ? Fpass 2 = 450 Khz ? Fstop 2 = 480 KHz

? Attenuation on both sides of the passband (双边通频带衰减) = 54 dB ? Pass band ripple (通频带脉动) = 1

? 在 Matlab 中, 改变目录为 c:/xup/dsp_flow/labs/lab3/: 在命令行窗口键入

cd c:/xup/dsp_flow/labs/lab3/ .

? 从MATLAB 控制台窗口打开 bandpass_filter.mdl 模块 ? 从 Xilinx Blockset → DSP 添加FDATool 模块到这个设计 ? 在 FDATool Design Filter 窗口 (图 3-1)输入下列滤波器参数

? Response Type: Bandpass ? Units: KHz

步骤 2: 把系数与滤波器相关联 步骤 3: 仿真 滤波器 步骤 4: 完成整个 设计

Step 6: 估计资源 占用量

Step 7: 执行 HW-in-the-L

oop

?Fstop 1 = 270 KHz

?Fpass 1 = 300 KHz

?Fpass 2 = 450 Khz

?Fstop 2 = 480 KHz

?Attenuation on both sides of the passband = 54 dB (Astop1 and Astop2 parameters)

?Pass band ripple = 1 (Apass)

图3-1. 在FDATool中设计一个滤波器.

?点击Design Filter按钮以确定滤波器指令

频谱窗口将被更新并显示如图3-2

图3-2. 所设计滤波器的幅频响应.

1. 基于所定义的技术要求, 最小的滤波器阶数是多少?

?用File → Save Session来储存fda格式文件coefficients.fda中的系数

注意: 这是可选的步骤. 这些系数对这个设计仍然可以利用. 如果你把参数储存在fda-file中,你可以通过FDATool 模块参数对话框来加载它们.

?用File → Export导出工作区中的系数,其Numerator variable name为Num(图3-3)

注意: 这将在你的MATLAB 工作区添加Num变量. 对于一个FIR 滤波器, Num 代表用在滤波器中的系数. 因为通过FDATool 模块仍能利用这些系数,这也是一可选的步骤

图 3-3. 在工作区中导出系数.

? 在 MATLAB 控制台窗口键入Num 来查看系数列表

? 在 MATLAB 控制台窗口键入max(Num) 以确定指出系数宽度和二进制小数点的最大系数值

2. 填入与系数相关的下列信息 最大值: ____________________ 最小值:

把系数与 FIR 滤波器相关联

步骤 2

实验总流程:

从 Xilinx Blockset

→ DSP library 添加FIR 滤波器模块并与产生的系数关联

? 从 Xilinx Blockset → DSP library 添加FIR (DA FIR v9_0)滤波器到设计中 ? 双击 Xilinx FIR Filter 模块 并在模块参数窗口 (图 3-4)中输入以下参数

? Coefficients : xlfda_numerator(‘FDATool’)

? Coefficient Structure : Inferred from Coefficients ? Number of bits per Coefficients : 12 ? Binary Point for Coefficients : 11 ?

Provide Valid Ports : unchecked

Step 1: Generate

Filter Coefficients Step 3: Simulate the Filter Step 4: Complete the Design

Step 5: Implement Design Step 7: Perform HW-in-the-L

oop

matlab函数用法

A a abs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令 brighten 亮度控制 C c

capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线

matlabsisotools使用手册

利用Matlab 內建程式 SISO Design Tool完成系統分析(Matlab 6.1): 開啟Matlab (6.x以上版本),如下圖一左方視窗中點選Control System Toolbox並執行SISO Design Tool,或在Command Window下鍵入sisotool亦可開啟功能。 圖一:Command Window 視窗 開啟後視窗如下: 圖二:SISO Design Tool視窗

File選項: 為使程式部分功能可行運作,首先必須在Command Window下輸入系統之轉移函數。例如:Command Window下建入G=tf([250],[1 25 0]),輸入完畢後再由SISO Design Tool視窗中選取File→Import便可開啟視窗如圖二: 圖三:系統資料輸入視窗 在視窗中可看見已定義之轉移函數G,檔案來源另可選擇MAT-file、Simulink。點選箭頭符號即可將其載入G(Plant)。其中H(Sensor)、F(Prefilter)、C(Compensator)也可利用相同的方式載入,若無載入參數,則程式將定為1。讀者也可點選圖中Other來切換不同方塊圖。全部選擇完畢後按OK建確認,便可顯示出系統圖形如圖四。 123456789 圖四:給定系統資料後之SISO Design Tool視窗

Edit選項: 1. Undo:取消上一次動作。 2. Redo:回複上一次動作。 3.以Root Locus為例:(其餘請自行類推),如圖五所示。 圖五:Edit選項示意圖 相對選項如下: Add Pole/Zero:增加(共軛)極點或(共軛)零點至原圖, 相同。點選後可利用滑鼠在圖形中選擇之位置增加極零 點。 Delet Pole/Zero:消除原圖之(共軛)極點或(共軛) 同。 Design Constraints:設計限制要求。如安定時間(Settling Time)、超越量 (Percent Overshoot)、阻尼比(Damping Ratio)、自然頻 率 (Natural Frequency)。 Grid:將圖形加上格線。 Zoom: Property:編輯圖形。如座標名稱、圖形顯示範圍、圖線顏色等。

Matlab中的FFT使用说明

FFT是Fast Fourier Transform(快速傅里叶变换)的简称,FFT算法在MATLAB 中实现的函数是Y=fft(x,n)。刚接触频谱分析用到FFT时,几乎都会对MATLAB 的fft函数产生一些疑惑,下面以看一个例子(根据MATLA帮助修改)。 Fs = 2000; % 设置采样频率 T = 1/Fs; % 得到采用时间 L = 1000; % 设置信号点数,长度1 秒 t = (0:L-1)*T; % 计算离散时间, % 两个正弦波叠加 f1 = 80; A1 = 0.5; % 第一个正弦波100Hz,幅度0.5 f2 = 150; A2 = 1.0 ; % 第2个正弦波150Hz,幅度 1.0 A3 = 0.5; % 白噪声幅度; x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t); % 产生离散时间信号; y = x + A3*randn(size(t)); % 叠加噪声; % 时域波形图 subplot(2,1,1) plot(Fs*t(1:50),x(1:50)) title('Sinusoids Signal') xlabel('time (milliseconds)') subplot(2,1,2) plot(Fs*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time (milliseconds)') NFFT = 2A nextpow2(L); % 设置FFT点数,一般为2 的N次方,如1024,512 等Y = fft(y,NFFT)/L; % 计算频域信号, f = Fs/2*linspace(0,1,NFFT/2+1); %频率离散化,fft后对应的频率是-Fs/2到Fs/2,由NFFT个离散频点表示 % 这里只画出正频率; % Plot single-sided amplitude spectrum. figure; plot(f,2*abs(Y(1:NFFT/2+1))); % fft 后含幅度和相位,一般观察幅度谱,并把负频率加上去, title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)')

matlab基本用法

目录: 一、说明 二、数据类型及基本输入输出 三、流程控制 四、循环 五、数组、数组运算和矩阵运算 六、M脚本文件和M函数文件、函数句柄 七、文件 八、数据和函数的可视化 一、说明 matlab作为数学软件有其强大的图形用户界面操作、数据和函数的可视化和数值计算功能,且自带很多现有的函数和工具包。而本文只涉及一些比较系统的基本操作,在最后附带介绍一些基本的数据和函数的可视化命令。建议要用的时候再利用matlab自带的帮助文档来搜索有用的函数和工具包。matlab的函数和命令都是比较人性化的,比如想要搜索读取fits文件的函数,搜索fits就能够搜到fitsread函数;需要将读出的fits数据重新做图,搜索image就可以找到imagesc函数。从书和别人的文档都只能学到有限的比较系统的操作,看帮助文档能发现更多的东西并整理出自己的使用方法。 二、数据类型及基本输入输出 1、数据类型,声明及赋初值 matlab中存储的数据类型(class)有以下几种: 而实际上matlab不需要对变量做声明,当它发现一个新的变量名时,将默认将其为双精度浮点类型(double)并分配内存空间。(这比C和 Fortran方便了许多,但在完成大运算量的程序时就显得浪费存储空间了) 当需要把变量a从double转为其他类型的时候,比如要转为int16型,可以使用以下命令:a=int16(a) 当需要创建一个字符型变量x并对其赋初值时,用以下格式:x='字符串'; 注意: (1)在命令后加“;”表示不在command window中显示结果,而对上例来说如果不加“;”则会显示所赋字符串内容。 (2)所有的命令必须在英文输入状态下,如果使用中文输入状态下全角的“;”,将被处理为非法字符。其中logical,cell和structure为逻辑,元胞和构架数组类型,将在后面的数组部分提到;function handle为函数句柄类型,将在后面的“M脚本文件和M函数文件、函数句柄”部分提到;java类供JAVA API应用程序接口使用,本文不进行说明。最后说明一下,matlab也支持复数操作,赋值的时候直接输入即可,比如:a=1+2i; 2、基本输入输出 输入:v=input('message') %将用户输入的内容赋给变量v v=input('message','s') %将用户输入的内容作为字符串赋给变量v keyboard %用户可以从键盘输入任意多个指令 v=yesinput('prompt',default,possib) %prompt为文字提示,default为缺省设置“值”,possib为设置值的范围。

Matlab GUIDE使用说明(Matlab GUI界面)

去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录。 从简单的例子说起吧。 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件 2. 使用GUIDE 快速的生成GUI界面 显然第二种可视化编辑方法算更适合写大型程序。 一:创建GUI 1.在 .m文件中动态添加 例如 h_main=figure(…name?,…a demo of gui design?,…menubar?,…none?,… 'numbertitle','off','position',[100 100 300 100]); h_edit=uicontrol('style','edit','backgroundcolor',[1 1 1],'position',[20 20 50 20],... 'tag','myedit','string','1','horizontalalignment','left'); h_but1=uicontrol('style','pushbutton','position',[20 50 50 20],'string','INC',... 'callback',['v=eval(get(h_edit,''string''));',... 'set(h_edit,''string'',int2str(v+1));']); h_but2=uicontrol('style','pushbutton','position',[80 50 50 20],'string','DEC',... 'callback',['v=eval(get(h_edit,''string''));','set(h_edit,''string'',int2str(v-1));']); 2.使用GUIDE帮助创建GUI 在Command 里面输入GUIDE 或者从菜单里面,或者从快捷按钮均可进入GUIDE

MATLAB文件各种操作方法(全)

1.1 文件的打开和关闭 1.1.1 文件的打开 fopen ('filename', 'mode') mode格式有: ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 Fopen函数两个返回值: 1、一个是返回一个文件标识(file Identifier),它会作为参数被传入其他对文件进 行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。 (如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不 存在,或是用户无法打开此文件权限); 2、另一个返回值就是message,用于返回无法打开文件的原因; 例:1-1 [f,message]=fopen('fileexam1', 'r') if f==-1 disp(message); %显示错误信息 end (若文件fileexam1不存在,则显示如下信息。 Cannot open file.existence?permissions?memory?) 例:1-2 [f,message]=fopen('fileexam2', 'r'); if f==-1 disp (message); %显示错误信息 else disp(f); end 若文件fileexam2存在,则返回f值。 1.1.2文件的关闭 Fclose(f) F为打开文件的标志,若若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。(打开和关闭文件比较耗时,最好不要在循环体内使用文件) 若要一次关闭打开的所有文件,可以使用下面的命令:fclose all

实验1 MATLAB使用方法和程序设计

实验1 MATLAB 使用方法和程序设计 一、实验目的 1、掌握MATLAB 软件使用的基本方法。 2、熟悉MATLAB 的数据表示、基本运算和程序控制语句。 3、熟悉MATLAB 绘图命令及基本绘图控制。 4、熟悉MATLAB 程序设计的基本方法。 二、实验内容 1.帮助命令 使用Help 命令,查找sqrt (开方)函数的使用方法。 2、矩阵运算 (1)矩阵乘法 已知A=[1 2;3 4];B=[5 5;7 8]; 求A^2*B 。 (2) 矩阵除法 已知A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3]; 求A\B,A/B 。 (3) 矩阵的转置及共轭转置 已知A=[5+i ,2-i ,1;6*i ,4,9-i];求A.’,A ’ 。 (4)使用冒号选出指定元素 已知A=[1 2 3 ; 4 5 6 ; 7 8 9]; 求A 中第3列前2个元素;A 中所有列第2,3行的元素。 (5)方括号[] 用magic 函数生成一个4阶魔术矩阵,删除该矩阵的第四列。 3、多项式 (1)求多项式p(x)=x 3-2x-4的根。 (2)求 f (x) = (cos x)2 的一次导数。 (3)求微分方程 的通解,并验证。 4、基本绘图命令 (1)绘制余弦曲线cost =y , ]2,0[π∈t 。 (2)在同一坐标系中绘制余弦曲线 0.25)-cos(t =y 和正弦曲线 )5.0sin(-=t y ,]2,0[π∈t (3)用plot3函数绘制三维螺线: 22x dy xy xe dx -+= sin()cos()x t y t z t =??=??=?( 0 < t < 20 )

MATLAB使用手册

MATLAB使用手册

MATLAB基础 1.1 MATLAB介绍 MATLAB是一种科学计算软件。MATLAB是Matrix Laboratory(矩阵实验室)的缩写,这是一种以矩阵为基础的交互式程序计算语言。早期的MATLAB主要用于解决科学和工程的复杂数学计算问题。由于它使用方便、输入便捷、运算高效、适应科技人员的思维方式,并且有绘图功能,有用户自行扩展的空间,因此特别受到用户的欢迎,使它成为在科技界广为使用的软件,也是国内外高校教学和科学研究的常用软件。 MATLAB由美国Mathworks公司于1984年开始推出,历经升级,到2001年已经有了6.0版,现在MATLAB 6.1、6.5、7.0版都已相继面世。早期的MATLAB在DOS环境下运行,1990年推出了Windows版本。1993年,Mathworks公司又推出了MATLAB的微机版,充分支持在MicrosoftWindows界面下的编程,它的功能越来越强大,在科技和工程界广为传播,是各种科学计算软件中使用频率最高的软件。 MATLAB比较易学,它只有一种数据类型(即64位双精度二进制),一种标准的输入输出语句,它用解释方式工作,不需要编译,一般入门后经过自学就可以掌握。如果有不清楚的地方,可以通过它的帮助(help)和演示(demo)功能得到启示。学习MATLAB的难点在于,它有大量函数,这些MATLAB函数仅基本部分就有700多个,其中常用的有200~300个,掌握和记忆起来都比较困难。 1993年出现了SIMULINK,这是基于框图的仿真平台,SIMULINK挂接在MATLAB 环境上,以MATLAB的强大计算功能为基础,以直观的模块框图进行仿真和计算。SIMULINK提供了各种仿真工具,尤其是它不断扩展的、内容丰富的模块库,为系统的仿真提供了极大便利。在SIMULINK平台上,拖拉和连接典型模块就可以绘制仿真对象的模型框图,并对模型进行仿真。在SIMULINK平台上,仿真模型的可读性很强,这就避免了在MATLAB窗口使用MATLAB命令和函数仿真时,需要熟悉记忆大量M函数的麻烦,对广大工程技术人员来说,这无疑是最好的福音。现在的MATLAB都同时捆绑了SIMULINK,SIMULINK的版本也在不断地升级,从1993年的MATLAB 4.0/SIMULINK 1.0版到2001年的MATLAB 6.1/SIMULINK 4.1版,2002年即推出了MATLAB 6.5/SIMULINK 5.0版。MATLAB已经不再是单纯的“矩阵实验室”了,它已经成为一个高级计算和仿真平台。 SIMULINK原本是为控制系统的仿真而建立的工具箱,在使用中易编程、易拓展,并且可以解决MATLAB不易解决的非线性、变系数等问题。它能支持连续系统和离散系统的

MATLAB中plot的用法

MATLAB中plot的用法(2011-05-17 22:10:50)转载▼ 标签:杂谈 第五讲计算结果的可视化 本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线, 当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘 制多条曲线。 例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >>plot(x,y1,x,y2) 图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专 门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可实 现它们的功能。 - 2 - 表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点<小于号 m 紫:点线o 圆s 正方形 c 青-. 点划线x 叉号 d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑>大于号 例如,在上例中输入 >>plot(x,y1,'r+-',x,y2,'k*:') 则得图5.1.2 图5.1.2 使用不同标记的plot 函数绘制的正弦曲线 5.1.2 图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 表5.1.2 图形修饰函数表

2matlab基本使用方法

(12+2*(7-4))/3^2 ans = 2 format short;pi ans = 3.1416 format long;pi ans = 3.141592653589793 format rat;pi ans = 355/113 format long;vpa(pi,50) ans = 3.141592653589793115997963468544185161590576171875 who Your variables are: ans a=randn(4) a = -0.1241 0.6715 0.4889 0.2939 1.4897 -1.2075 1.0347 -0.7873 1.4090 0.7172 0.7269 0.8884 1.4172 1.6302 -0.3034 -1.1471 whos Name Size Bytes Class Attributes a 4x4 128 double ans 1x1 8 double who Your variables are: a ans what M-files in the current directory E:\Matlab2010\智能仿生算法\遗传算法TSP_SuiJiSuanFa ZhuanJiaXiTongP167 fun_SuiJiSuanFa TSPrun_SuiJiSuanFa f fun_SuiJiSuanFa0

ZhuanJiaXiTongP162 f1 fun_SuiJiSuanFa2 MAT-files in the current directory E:\Matlab2010\智能仿生算法\遗传算法 my27city dir . ZhuanJiaXiTongP162.asv f.m my27city.mat .. ZhuanJiaXiTongP162.m f1.m temp 3d.asv ZhuanJiaXiTongP167.asv fun_SuiJiSuanFa.asv temp.prj 3d.m ZhuanJiaXiTongP167.m fun_SuiJiSuanFa.m zia03836 New Folder bou2_4l.shp fun_SuiJiSuanFa0.asv TSP_SuiJiSuanFa.m da fun_SuiJiSuanFa0.m TSPrun_SuiJiSuanFa.m da.prj fun_SuiJiSuanFa2.m type 3d clf; x=-3:0.1:3; y=-3:0.1:3; [X Y]=meshgrid(x,y); Z=f(X,Y)+4; mesh(X,Y,Z); hold on; plot3(-0.7,-1,f(-0.7,-1)+4,'g*'); contour(X,Y,Z,'r'); which rand built-in (D:\Program Files\MATLAB\R2010a\toolbox\matlab\randfun\rand) which 3d.m E:\Matlab2010\智能仿生算法\遗传算法\3d.m help exist EXIST Check if variables or functions are defined. EXIST('A') returns: 0 if A does not exist 1 if A is a variable in the workspace 2 if A is an M-file on MATLAB's search path. It also returns 2 when A is the full pathname to a file or when A is the name of an ordinary file on MATLAB's search path 3 if A is a MEX-file on MATLAB's search path 4 if A is a MDL-file on MATLAB's search path 5 if A is a built-in MATLAB function 6 if A is a P-file on MATLAB's search path 7 if A is a directory 8 if A is a Java class

Matlab中插值函数汇总和使用说明.

告: Matlab中插值函数汇总和使用说明收藏 命令1 interp1 功能一维数据插值(表格查找。该命令对数据点之间计算内插值。它找出一元函数f(x在中间点的数值。其中函数f(x由所给数据决定。x:原始数据点 Y:原始数据点 xi:插值点 Yi:插值点 格式 (1yi = interp1(x,Y,xi 返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y 的内插值决定。参量x 指定数据Y 的点。 若Y 为一矩阵,则按Y 的每列计算。yi 是阶数为length(xi*size(Y,2的输出矩阵。 (2yi = interp1(Y,xi 假定x=1:N,其中N 为向量Y 的长度,或者为矩阵Y 的行数。 (3yi = interp1(x,Y,xi,method 用指定的算法计算插值: ’nearest’:最近邻点插值,直接完成计算; ’linear’:线性插值(缺省方式,直接完成计算;

’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函 数。命令spline 用它们执行三次样条函数插值; ’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数p chip,用于对向量x 与y 执行分段三次内插值。该方法保留单调性与数据的外形; ’cubic’:与’pchip’操作相同; ’v5cubic’:在MATLAB 5.0 中的三次插值。 对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。 (4yi = interp1(x,Y,xi,method,'extrap' 对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。 (5yi = interp1(x,Y,xi,method,extrapval 确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。 例1 1.>>x = 0:10; y = x.*sin(x; 2.>>xx = 0:.25:10; yy = interp1(x,y,xx; 3.>>plot(x,y,'kd',xx,yy 复制代码 例2 1.>> year = 1900:10:2010;

matlab软件的使用方法

MATLAB 软件使用简介 默认分类2007-03-15 21:26:49 阅读4106 评论8 字号:大中小订阅 MATLAB 软件使用简介 MATLAB 是一个功能强大的常用数学软件, 它不但可以解决数学中的数值计算问题, 还可以解决符号演算问题, 并且能够方便地绘出各种函数图形。MATLAB自1984年由美国的MathWorks公司推向市场以来,历经十几年的发展和竞争,现已成为国际最优秀的科技应用软件之一。这里主要以适用于Windows操作系统的MATLAB5.3版本向读者介绍MATLAB 的使用命令和内容。 一、MATLAB 的进入/退出 MA TLAB 的安装成功后, 系统会在Windows【开始】菜单的【程序】子菜单中加入启动MATLAB命令的图标, 用鼠标单击它就可以启动MATLAB系统,见图2.1。 图2.1 启动MA TLAB 启动MATLAB后, 屏幕上出现MATLAB命令窗口: 图2.2 MA TLAB命令窗口 图2.2的空白区域是MATLAB 的工作区(命令输入区), 在此可输入和执行命令。 退出MATLAB系统像关闭Word文件一样, 只要用鼠标点击MATLAB系统集成界面右上角的关闭按钮即可。 二、MATLAB 操作的注意事项 l 在MA TLAB工作区输入MATLAB命令后, 还须按下Enter键, MA TLAB才能执行你输入的MA TLAB命令, 否则MA TLAB不执行你的命令。 l MATLAB 是区分字母大小写的。 l 一般,每输入一个命令并按下Enter键, 计算机就会显示此次输入的执行结果。(以下用↙表示回车)。如果用户不想计算机显示此次输入的结果,只要在所输入命令的后面再加上一个分号“;”即可以达到目的。如: x= 2 + 3 ↙x=5 x = 2 + 3 ; ↙不显示结果5 l 在MA TLAB工作区如果一个表达式一行写不下,可以用在此行结尾处键入三个英文句号的方法达到换行的目的。如: q=5^6+sin(pi)+exp(3)+(1+2+3+4+5)/sin(x)… -5x+1/2-567/(x+y) l MATLAB 可以输入字母、汉字,但是标点符号必须在英文状态下书写。 l MATLAB 中不需要专门定义变量的类型,系统可以自动根据表达式的值或输入的值

matlab基本使用方法

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:>> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 > 小整理:MATLAB常用的三角函数 sin(x):正弦函数 cos(x):馀弦函数 tan(x):正切函数

MATLAB中文手册

Matlab中文手册 目录 (1) 第1章MATLAB 6.5环境 (6) 1.1 MA TLAB简介 (6) 1.1.1 MATLAB工具箱 (6) 1.1.2 MATLAB功能和特点 (6) 1.2 MA TLAB 6.5环境设置 (7) 1.2.1 菜单栏 (7) 1.2.2 工具栏 (10) 1.2.3 通用操作界面窗口 (10) 1.3 MA TLAB 6.5帮助 (19) 1.4 MATLAB 6.5其他管理 (20) 1.4.1 MATLAB用户文件格式 (20) 1.4.2设置搜索路径 (21) 1.4.3文件管理命令 (22) 1.4.4 退出MA TLAB (23) 1.5 一个实例 (23) 第2章MATLAB数值计算 (26) 2.1 变量和数据 (26) 2.1.1数据类型 (26) 2.1.2数据 (26) 2.1.3变量 (27) 2.2 矩阵和数组 (28) 2.2.1矩阵输入 (28) 2.2.2矩阵元素和操作 (31) 2.2.3字符串 (37) 2.2.4矩阵和数组运算 (41) 2.2.5多维数组 (52) 2.3稀疏矩阵 (55) 2.3.1稀疏矩阵的建立 (55) 2.3.2稀疏矩阵的存储空间 (58) 2.3.3稀疏矩阵的运算 (59) 2.4多项式 (59) 2.4.1多项式的求值、求根和部分分式展开 (59) 2.4.2多项式的乘除法和微积分 (61) 2.4.3多项式拟合和插值 (63) 2.5元胞数组和结构数组 (65) 2.5.1元胞数组 (65) 2.5.2结构数组 (68) 2.6数据分析 (71)

2.6.1数据统计和相关分析 (71) 2.6.2差分和积分 (72) 2.6.3卷积和快速傅里叶变换 (74) 2.6.4向量函数 (76) 第3章MATLAB符号计算 (77) 3.1 符号表达式的建立 (77) 3.1.1 创建符号常量 (77) 3.1.2 创建符号变量和表达式 (78) 3.1.3 符号矩阵 (79) 3.2符号表达式的代数运算 (81) 3.2.1符号表达式的代数运算 (81) 3.2.2 符号数值任意精度控制和运算 (83) 3.2.3 符号对象与数值对象的转换 (84) 3.3符号表达式的操作和转换 (85) 3.3.1符号表达式中自由变量的确定 (85) 3.3.2符号表达式的化简 (86) 3.3.3符号表达式的替换 (89) 3.3.4求反函数和复合函数 (90) 3.3.5 符号表达式的转换 (92) 3.4 符号极限、微积分和级数求和 (93) 3.4.1符号极限 (93) 3.4.2符号微分 (94) 3.4.3符号积分 (96) 3.4.4符号级数 (97) 3.5 符号积分变换 (98) 3.5.1傅里叶(Fourier)变换及其反变换 (98) 3.5.2拉普拉斯(Laplace)变换及其反变换 (99) 3.5.3 Z变换及其反变换 (100) 3.6符号方程的求解 (101) 3.6.1代数方程 (101) 3.6.2符号常微分方程 (102) 3.7符号函数的可视化 (103) 3.7.1符号函数的绘图命令 (103) 3.7.2图形化的符号函数计算器 (105) 3.8 Maple函数的使用 (105) 3.8.1访问Maple函数 (105) 3.8.2 获得Maple的帮助 (106) 第4章MA TLAB计算的可视化和GUI设计 (107) 4.1二维曲线的绘制 (107) 4.1.1基本绘图命令plot (107) 4.1.2绘制曲线的一般步骤 (111) 4.1.3多个图形绘制的方法 (112) 4.1.4曲线的线型、颜色和数据点形 (114) 4.1.5设置坐标轴和文字标注 (115)

(完整版)matlab中fdatool使用说明

基于MATLAB的滤波器设计 由于MATLAB的广泛使用和功能的不断更新,基于MATLAB的滤波器设计方法以其方便快捷的特点,受到了设计者的欢迎。下面将举例说明基于MATLAB的FIR滤波器的设计。 1 基于FDATool的FIR滤波器设计 使用FDATool设计FIR滤波器的具体步骤如下: 1.1 滤波器指标 若需要设计一个16阶的FIR滤波器(h(0)=0),给定的参数如下: (1) 低通滤波器 (2) 采样频率F S为48kHz,滤波器F C为10.8kHz (3) 输入序列位宽为9位(最高位为符号位) 在此利用MATLAB来完成FIR滤波器系数的确定。 1.2 打开MATLAB的FDATool MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。 单击MATLAB主窗口下方的“Start”按钮,如图B.1所示,选择菜单“ToolBox”→“Filter Design”→“Filter Design & Analysis Tool(FDATool)”命令,打开FDATool,如图B.2所示。 图B.1 FDATool的启动

图B.2 FDATool的主界面 另外,在MATLAB主命令窗口内键入“fdatool”,同样可打开FDATool程序界面。 1.3 选择Design Filter FDATool界面左下侧排列了一组工具按钮,其功能分别如下所述: ●滤波器转换(TransForm Filter) ●设置量化参数(Set Quantization Parameters) ●实现模型(Realize Model) ●导入滤波器(Import Filter) ●多速率滤波器(Multirate Filter) ●零极点编辑器(Pole-zero Editor) ●设计滤波器(Design Filter) 选择其中的按钮,进入设计滤波器界面,进行下列选择,如图B.3所示。

Matlab用法大全

Matlab用法大全 1求取系统单位阶跃响应:step() step()函数的用法 y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵 [y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成, 状态变量x返回为空矩阵。 [y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。 2h = tf([1 1],[1 2 5]); [num,den] = tfdata(h,'v') 3a(:,j)表示a的j列的所有行元素 a(i,:)表示i行的所有列元素 4a=[]创建空矩阵 5 eval ()函数的功能就是将括号内的字符串视为语句并运行 例如:eval ('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。 多在循环中使用,可以对多个名字有规则的变量或文件进行操作, 例一: for x=1:5 eval (['y',num2str(x),'=',num2str(x^2),';']) end 以上语句等价于执行以下5句: ynum2str(1)=num2str(1^2); ynum2str(2)=num2str(2^2); ynum2str(3)=num2str(3^2); ynum2str(4)=num2str(4^2); ynum2str(5)=num2str(5^2); 例二: subplot(711);plot(t,y);title('原始信号’); for i=1:6 subplot(7,1,i+1); plot(t,imf(i,:)); eval (['title(''IMF',int2str(i),''');']); end ------------------------- 以上6行程序实际上是执行以下7条命令 subplot(711);plot(t,y);title('原始信号'); subplot(7,1,2);plot(t,imf(1,:));title('IMF1'); subplot(7,1,3);plot(t,imf(2,:));title('IMF2'); subplot(7,1,4);plot(t,imf(3,:));title('IMF3'); subplot(7,1,5);plot(t,imf(4,:));title('IMF4');

MATLAB 基本操作和简单语句输入

实验一基本操作和简单语句输入 一、实验目的和要求 1、熟悉MATLAB的命令窗口 2、掌握MATLAB的一些基本操作,能够进行一般的数值计算 3、实现语句的重调和修改 二、实验内容和步骤 1、启动MATLAB 2、观察MATLAB窗口的组成部分 (1)了解菜单栏各菜单项的功能,用书变打开MA TLAB的各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义 (2)用鼠标指向常用工具栏的每个工具按钮,了解各个工具按钮的含义 3、命令窗口的打开和关闭 (1)查看窗口的打开和关闭 (2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果 (3)利用MATLAB中编辑命令行事常用的按键功能,调出上一语句,对它进行修改(如把分号改成逗号,看运行结果),并把运行结果复制到word中保存。 >> a=3;b=4;y=a*b+a/b, y = 12.7500 >> a=3,b=4,y=a*b+a/b, a = 3 b = 4 y = 12.7500 (4)关闭命令窗口

(5)打开命令窗口 4、使用MATLAB帮助 熟悉MATLAB的帮助系统,通过帮助系统了解有关内容 5、在命令窗口中输入demo,将出现MA TLAB的演示窗,通过演示窗,对MATLAB的功能进一步的浏览。 三、试验环境 计算机MA TLAB软件 四、练习 1、调出MATLAB\stateflow的演示实例

2、计算y=x^3+(x-0.98)^2/(x+1.25)^3-5(x+1/x),x=2,x=3时的值 3、计算cos60?-√(9-√2) 4、已知a=3,A=4,b=a^2,B=b^2-1,c=a+A-2B,C=a+B+2c,求C

相关文档
最新文档