文档库 最新最全的文档下载
当前位置:文档库 › matlab序列的运算

matlab序列的运算

实验三序列的运算

一、实验内容

1、序列的乘积:仿真并完成例题1.22

2、序列的移位:编写seqshift()函数,实现序列的移位,并作图验证。

3、序列的卷积:编写convwthn()函数,实现具体序列的卷积,并且进行理论计算,比较结果。

4、序列的相关:仿真并完成例题1.24

二、MATLAB仿真

1、序列的乘积

解:

function [y,n] = seqadd(x1,n1,x2,n2)

n=min((n1),min(n2)):max((n1):max(n2));

y1=zeros(1,length(n));y2=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;

y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;

y=y1+y2;

function [y,n] = seqmult(x1,n1,x2,n2);

n=min((n1),min(n2)):max((n1):max(n2));

y1=zeros(1,length(n));y2=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;

y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;

y=y1.*y2;

代码:

clc;clear all;

x1=[1,3,5,7,6,4,2,1];ns1=-3;

x2=[4,0,2,1,-1,3];ns2=1;

nf1=ns1+length(x1)-1;

nf2=ns2+length(x2)-1;

n1=ns1:nf1;

n2=ns2:nf2;

n=min(ns1,ns2):max(nf1:nf2);

y1=zeros(1,length(n));y2=y1;

y1(find((n>=ns1)&(n<=nf1)==1))=x1;

y2(find((n>=ns2)&(n<=nf2)==1))=x2;

ya=y1+y2;

ym=y1.*y2;

subplot(221);

stem(n1,x1,'*','r');

ylabel('x1(n)');

grid;

subplot(223);

stem(n2,x2,'*','r');

xlabel('n');

ylabel('x2(n)');

grid;

subplot(222);

stem(n,ya,'*','r');

ylabel('y1(n)+y2(n)');

grid;

subplot(224);

stem(n,ym,'*','r');

xlabel('n');

ylabel('y1(n)*y2(n)');

grid;

如图1所示。

clc;clear all;

x1=[1,3,5,7,6,4,2,1];

ns1=-3;

x2=[4,0,2,1,-1,3];

ns2=1;

nf1=ns1+length(x1)-1;

nf2=ns2+length(x2)-1;

n1=ns1:nf1;

n2=ns2:nf2;

[ya,n] = seqadd(x1,n1,x2,n2); [ym,n] = seqmult(x1,n1,x2,n2); subplot(221);

stem(n1,x1,'*','r');

ylabel('x1(n)');

grid;

subplot(223);

stem(n2,x2,'*','r');

xlabel('n');

ylabel('x2(n)');

grid;

subplot(222);

stem(n,ya,'*','r');

ylabel('y1(n)+y2(n)');

grid;

subplot(224);

stem(n,ym,'*','r');

xlabel('n');

ylabel('y1(n)*y2(n)');

grid;

图1

解:

function [y,ny] = seqshift(x,nx,m) ny = nx+m;

y = x;

代码:

clc;clear all

x=[1,2,3,4,5];

nx=-2:2;

m=2; %向右移2个单位

[y,ny] = seqshift(x,nx,m);

subplot(211);

stem(nx,x,'*','r');

title('原序列x(n)');

xlabel('n');

ylabel('x(n)');

subplot(212);

stem(ny,y,'*','r');

title('移位后序列y(n)');

xlabel('n');

ylabel('y(n)');

grid;

如下图2所示:

图2

解:

function [y,ny] = convwthn(x,nx,h,nh) ny1 = nx(1)+nh(1);

ny2 = nx(end)+nh(end);

y = conv(x,h);

ny = (ny1:ny2);

代码:

clc;clear all;

x = [1,2,3,-1,-2];

nx = -1:3;

h = [2,2,1,-1,4,-2];

nh = -3:2;

[y,ny] = convwthn(x,nx,h,nh);

stem(ny,y,'*','r');

xlabel('n');

ylabel('y(n)');

grid;

x(n)与h(n)相卷积得到的图形如图3所示:

图3

4、序列的相关

解:

function [y,ny] = convwthn(x,nx,h,nh) ny1 = nx(1)+nh(1);

ny2 = nx(end)+nh(end);

y = conv(x,h);

ny = (ny1:ny2);

代码:

clc;clear all

x = [2,1,3,2,1,5,1];

nx = 1:7;

y = [2,1,3,4];

ny = 1:4;

N1 = length(x)-1;

N2 = length(y)-1;

rxy = convwthn(fliplr(y),-ny,x,nx);

k = -(N2):N1;

stem(k,rxy,'*','r');

xlabel('n');

ylabel('rxy(n)');

title('x(n)与y(n)之间的互相关');

axis([-N2,N1,0,35]);

grid;

图4

三、实验小结

通过这次实验使我知道序列的卷积可以通过matlab实现。Matlab里本身有丰富的库函数,画图,求卷积各种运算只要调用相应的库函数即可。本次实验的难点就在conv()函数和各序列长度的计算,如果不注意其中的计算关系很容易出错。而conv()函数只要写错,后面的图形就不能准确的绘制出来。

实验1离散时间信号的产生与运算

数字信号处理 实验报告 班级: 学号: 姓名:word文档可自由复制编辑

实验1离散时间信号的产生与运算 一、实验目的 (1)了解离散时间信号的特点。 (2)掌握在计算机中生成及绘制各种常用离散时间信号序列的方法。 (3)掌握序列的加、减、乘、除和平移、反转、尺度变换等基本运算及计算机的 实现方法。 二、实验原理 信号是随时间变化的物理量,而计算机只能处理离散信号。离散信号是在某些不连续的时间上有信号值,而在其它时间点上没有定义的一类信号。离散信号一般可以由连续信号通过模数转换得到。 常用的离散信号有单位脉冲序列、单位阶跃序列、复指数序列、正弦信号序列、随机序列等。 离散信号的基本运算包括信号的加、减、乘、除。离散信号的时域变换包括信号的平移、反转、尺度变换等。 三、实验内容与方法 1、编写程序,生成如下数字信号:sqrt(2*k)u(k错误!未找到引用源。3), δ(k+5)。 (1) f(k)=sqrt(2*k)u(k错误!未找到引用源。3) 代码: k=(1:10); n=3; u=[(k-n)>=0]; a=sqrt(2*k); stem(k,a.*u); title('sqrt(2*k)u(k 3)的图像'); xlabel('时间(k)');ylabel('幅值f(k)'); 运行图: word文档可自由复制编辑

(2) f(k)= δ(k+5) 代码: k1=-10;k2=0;k=k1:k2; n=-5; %单位脉冲出现的位置 f=[(k-n)==0]; stem(k,f,'filled');title('δ(k+5)序列的图像') xlabel('时间(k)');ylabel('幅值f(k)'); 运行图: word文档可自由复制编辑

MATLAB数据及其运算_习题答案

第2章 MATLAB数据及其运算 习题2 一、选择题 1.下列可作为MATLAB合法变量名的是()。D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。C A.+10 B. C.2e D.2i 3.使用语句t=0:7生成的是()个元素的向量。A A.8 B.7 C.6 D.5 4.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。B A.1 B.2 C.3 D.4 5.已知a为3×3矩阵,则a(:,end)是指()。D A.所有元素 B.第一行元素 C.第三行元素 D.第三列元素 6.已知a为3×3矩阵,则运行a (1)=[]后()。A A.a变成行向量 B.a变为2行2列 C.a变为3行2列 D.a变为2行3列 7.在命令行窗口输入下列命令后,x的值是()。B >> clear >> x=i*j A.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。D A.34 B.354 C.453 D.43 9.下列语句中错误的是()。B A.x==y==3 B.x=y=3 C.x=y==3 D.y=3,x=y 10.find(1:2:20>15)的结果是()。C A.19 20 B.17 19 C.9 10 D.8 9 11.输入字符串时,要用()将字符括起来。C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。A A.9 B.11 C.7 D.18

13.eval('sqrt(4)+2')的值是()。B A.sqrt(4)+2 B.4 C.2 D.2, 2 14.有3×4的结构矩阵student,每个结构有name(姓名)、scores(分数)两个成 员,其中scores是以1×5矩阵表示的5门课的成绩,那么要删除第4个学生的第2门课 成绩,应采用的正确命令是()。D A.rmfield(student(1,2).scores(2)) B.rmfield(student(4).scores) C.student(4).scores(2)=0 D.student(1,2).scores(2)=[] 15.有一个2行2列的单元矩阵c,则c(2)是指()。B A.第一行第二列的元素内容 B.第二行第一列的元素内容 C.第一行第二列的元素 D.第二行第一列的元素 二、填空题 1.从键盘直接输入矩阵元素来建立矩阵时,将矩阵的元素用括起来,按矩阵 行的顺序输入各元素,同一行的各元素之间用分隔,不同行的元素之间用 分隔。中括号,逗号或空格,分号 2.设A=[1,2;3,4],B=[5,6;7,8],则A*B= , A.*B= 。 A*B=[19,22;43,50],A.*B=[5,12;21,32] 3.有3×3矩阵,求其第 5个元素的下标的命令是,求其第三行、第三列元 素的序号的命令是。[i,j]=ind2sub([3 3],5),ind=sub2ind([3 3],3,3) 4.下列命令执行后的输出结果是。20 >> ans=5; >> 10; >> ans+10 5.下列命令执行后,new_claim的值是。This is a great example. claim= 'This is a good example.'; new_claim=strrep(claim,'good','great') 三、应用题 1.命令X=[]与clear X有何不同请上机验证结论。 Clear X是将X从工作空间中删除,而X=[]是给X赋空矩阵。空矩阵存在于工作空间 中,只是没有任何元素。 2.在一个MATLAB命令中,6?+?7i和6?+ 7*i有何区别i和I有何区别 3.设A和B是两个同大小的矩阵,试分析A*B和A.*B、A./B和B.\A、A/B和B\A的 区别如果A和B是两个标量数据,结论又如何 4.写出完成下列操作的命令。 (1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。 (2)删除矩阵A的第5号元素。

离散信号的产生及运算

离散信号的产生及运算

实验一离散信号的产生及运算 一.实验目的: 1.复习和巩固数字信号处理中离散信号的产生和运算 2.学习和掌握用MATLAB 产生离散信号的方法 3.学习和掌握用MATLAB 对离散信号进行运算 二.实验原理 1.用MATLAB 函数产生离散信号 信号是数字信号处理的最基本内容。没有信号,数字信号处理就没了工作对象。MATLAB7.0 内部提供了大量的函数,用来产生常用的信号波形。例如,三角函数(sin,cos), 指数函数(exp),锯齿波函数(sawtooth), 随机数函数(rand)等。 ⑴产生被噪声污染的正弦信号 用随机数函数产生污染的正弦信号。 ⑵产生单位脉冲序列和单位阶跃序列 按定义,单位脉冲序列为 0 0 0 1, ( ) 0,n n n n n n 单位阶跃序列为 。 0 0 0 1, ( ) 0,n n u n n n n ⑶矩形脉冲信号:在MATLAB 中用rectpuls 函数来表示,其调用形式为: y=rectpuls(t,width),用以产生一个幅值为1,宽度为width,相对于t=0 点左右对称的矩形波信号,该函数的横坐标范围由向量t 决定,是以t=0 为中心向左右各展开width/2 的范围,width 的默认值为1。 例:以t=2T(即t-2×T=0)为对称中心的矩形脉冲信号的MATLAB 源程序如下:(取T=1) t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); plot(t,ft);grid on; axis([0 4 –0.5 1.5]); ⑷周期性矩形波(方波)信号在MATLAB 中用square 函数来表示,其调用形式为:y=square(t,DUTY),用以产生一个周期为2π、幅值为±1 的周期性方波信号,其中的DUTY 参数表示占空比,即在信号的一个周期中正值所占的百分比。例如频率为30Hz 的周期性方波信号的MATLAB 参考程序如下: t=-0.0625:0.0001:0.0625; y=square(2*pi*30*t,75); plot(t,y);axis([-0.0625 0.0625 –1.5 1.5]);grid on ; 2.MATLAB 中信号的运算 乘法和加法:离散信号之间的乘法和加法,是指它的同序号的序列值逐项对应相乘和相加。

实验一--常见离散信号的MATLAB产生和图形显示

实验一 常见离散信号的MATLAB 产生和图形显示 授课课时:2学时 一、实验目的: (1)熟悉MATLAB 应用环境,常用窗口的功能和使用方法。 (2)掌握MATLAB 在时域内产生常用离散时间信号的方法。 (3)掌握离散信号的基本运算。 (4)掌握简单的绘图命令。 二、实验原理: (一)信号的表示和产生 ① 单位抽样序列 ? ??=01)(n δ 00 ≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即: ???=-0 1)(k n δ ≠=n k n 参考程序: 例1-1:)2010(()(<<-=n n n x )δ clear all n1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。 n=n1:n2;%生成离散信号的时间序列 x=[n==n0];%生成离散信号x(n) stem(n,x);%绘制脉冲杆图

xlabel(' n');ylabel('x(n)');%横坐标和纵坐标的标注说明。 title('Unit Sample Sequence');%图形上方标注图名 axis([-10 20 0 1.2]);%确定横坐标和纵坐标的取值范围 ② 单位阶跃序列 ???=0 1 )(n u 00<≥n n 例1-2:)202((u )(<<-=n n n x ) clear all n1=-2;n2=20;n0=0; n=n1:n2;%生成离散信号的时间序列 x=[n>=n0];%生成离散信号x(n) stem(n,x,'filled'); xlabel('n');ylabel('x(n)'); title('Unit step Sequence'); axis([-2 20 0 1.2]); ③ 正弦序列 )sin()(?+=wn A n x 例1-3:一正弦信号的频率为1HZ ,振幅值幅度A 为1V ,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。 参考程序: clear f=1; A=1;nt=2;

离散时间信号表与运算

离散时间信号表与运算

————————————————————————————————作者:————————————————————————————————日期:

实验一 离散时间信号的表示与运算 一 实验目的 1、熟悉MATLAB 的绘图函数; 2、掌握单位取样序列、单位阶跃序列、矩形序列和正余弦序列的产生方法; 3、掌握离散时间信号基本运算的MATLAB 实现; 4、掌握离散时间信号线性卷积和运算的MATLAB 实现。 二 实验设备 1、计算机 2、MA TLAB R2007a 仿真软件 三 实验原理 1)序列相加和相乘 设有序列)(1n x 和)(2n x ,它们相加和相乘如下: ) ()()()()()(2121n x n x n x n x n x n x ?=+= 注意,序列相加(相乘)是对应序列值之间的相加(相乘),因此参加运算的两个序列必须具有相同的长度,并且保证位置相对应。如果不相同,在运算前应采用zeros 函数将序列左右补零使其长度相等并且位置相对应。在MATLAB 中,设序列用x1和x2表示,序列相加的语句为:x=x1+x2;然而要注意,序列相乘不能直接用x=x1*x2,该式表示两个矩阵的相乘,而不是对应项的相乘。对应项之间相乘的实现形式是点乘“.*”,实现语句为:x=x1.*x2。 2)序列翻转 设有序列:)()(n x n y -=,在翻转运算中,序列的每个值以n=0为中心进行翻转,需要注意的是翻转过程中序列的样值向量翻转的同时,位置向量翻转并取反。MATLAB 中,翻转运算用fliplr 函数实现。设序列)(n x 用样值向量x 和位置向量nx 表述,翻转后的序列 )(n y 用样值向量y 和位置向量ny 描述。 3)序列的移位 移位序列)(n x 的移位序列可表示为:)()(0n n x n y -=,其中,00>n 时代表序列右移 0n 个单位;00

实验1 常见离散信号产生和基本运算

实验项目一 常见离散信号产生和基本运算 1.实验目的 (1)掌握MATLAB 最基本的矩阵运算语句; (2)掌握对常用离散信号的理解与运算实现。 2.实验内容 (1)熟悉MATLAB 的使用环境和方法; (2)练习使用基本的向量生成、矩阵运算、绘图等语句; 利用冒号(:)生成向量: X1=[1 2 3 4 5] X2=[1.000 1.500 2.000 2.500] X3=[5 4 3 2 1] 分别生成3*3,3*4的全0矩阵,全1矩阵和随机矩阵; 分别输入矩阵: 123 456789A = 1.0 1.1 1.22.0 2.1 2.23.0 3.1 3.2 B = 分别计算A+B ,A-B ,A+3,A-4,A*B ,A.*B ,C=inv (A ),A/B,A./B ; 分别计算sin(x1),cos(x1),exp(x1),log(x2),sqrt(x2)。 (3)生成以上五种基本离散信号函数; (4)绘出信号zn e n x =)(,当6)12/1(π j z +-=、6)12/1(π j z +=时、 121=z 、62π j z +=、6π j z =时的信号实部和虚部图; (5)绘出信号)1.0*2sin(5.1)(n n x π=的频率是多少?周期是多少?产生一个数字频率为0.9的正弦序列,并显示该信号,说明其周期并绘图。 3.实验技能要求 掌握并能灵活运用MATLAB 语句对离散时间信号进行基本建立和运算。 4.实验操作要求 在实验操作过程中要注意对基本实验仪器的保护。

5.实验场所 魂芯DSP应用实验室 6.实验课后训练 实验课后训练以实验报告为表现形式,在实验报告中要对实验过程中出现的问题进行分析和思考,对所测得的数据进行数据处理,并根据结果进行总结。

离散信号的产生及运算

实验离散信号的产生及运算实验报告一实验任务 二实验程序及结果 n=0 :20; x=3*sin(pi*n/4+4/pi); subplot(2, 2, 1), stem(n,x); title(' x=3*sin(pi*n/4+4/pi)'); n=-20*pi:20*pi; f=sinc(n/pi); subplot(2,2,2), stem(n,f); title(' f=sinc(n/pi)'); n1 = -5; n2 = 5; n0= 0;

n = n1:n2; x =[n>=n0]; n1 = -5; n2 = 5; n0= 0; n = n1:n2; f =[ n >= n0]; subplot(2,2,3), stem(n, f,'filled'); title('f(n)=u(n)'); n1 = -5; n2 = 5; n01 = -3; n02 = 4; n = n1:n2; x1 = [(n-n01) == 0]; x2 = [(n-n02) == 0]; x=x1+2*x2; subplot(3,1,1);stem(n,x1,'filled','k'); ylabel('n+3') subplot(3,1,2);stem(n,x2,'filled','k'); ylabel('n-4') subplot(3,1,3);stem(n,x,'filled','k'); ylabel('x(n)');

n=0:24; x1=exp(-n/16); x2=5*sin(2*pi*n/10); x=x1.*x2; subplot(3,1,1);stem(n,x1,'filled','k'); title('x1=exp(-n/16)'); subplot(3,1,2);stem(n,x2,'filled','k'); title(' x2=5*sin(2*pi*n/10)'); subplot(3,1,3);stem(n,x,'filled','k'); title('x(n)=x1*x2');

时域离散信号的产生与基本运算

时域离散信号的产生与 基本运算 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

实验一 时域离散信号的产生与基本运算 一、实验目的 1、了解常用的时域离散信号及其特点。 2、掌握MATLAB 产生常用时域离散信号的方法。 3、掌握时域离散信号简单的基本运算方法。 二、实验内容 1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列。 2、自己设定参数,分别表示并绘制信号移位、信号相加、信号相乘、信号翻转、 信号和、信号积、信号能量。 3、已知信号 (1) 描绘)(n x 序列的波形。 (2) 用延迟的单位脉冲序列及其加权和表示)(n x 序列。 (3) 描绘以下序列的波形:)2()(),2(2)(),2(2)(321n x n x n x n x n x n x -=+=-= 三、实现步骤 1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列。 (1)单位抽样序列 程序: x=zeros(1,10); x(2)=1;

stem(x,'filled') axis([0,10,,1]); title('μ¥3éùDòáD'); 图1(2)单位阶跃序列 程序: N=10; u=ones(1,N); stem(u,'filled') axis([-10,10,0,1]); title('μ¥×DòáD');

图2(3)正弦序列 程序: x=-20:1:20; y=sin*pi.*x+*pi); stem(x,y,'filled'); axis([-20,20,-2,2]); title('yòDòáD');

第2章matlab数据及其运算_习题答案

第2章M A T L A B数据 及其运算_习题答案-CAL-FENGHAI.-(YICAI)-Company One1

第2章 MATLAB数据及其运算 习题2 一、选择题 1.下列可作为MATLAB合法变量名的是()。D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。C A.+10 B. C.2e D.2i 3.使用语句t=0:7生成的是()个元素的向量。A A.8 B.7 C.6 D.5 4.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。B A.1 B.2 C.3 D.4 5.已知a为3×3矩阵,则a(:,end)是指()。D A.所有元素 B.第一行元素 C.第三行元素 D.第三列元素 6.已知a为3×3矩阵,则运行a (1)=[]后()。A A.a变成行向量 B.a变为2行2列 C.a变为3行2列 D.a变为2行3列 7.在命令行窗口输入下列命令后,x的值是()。B >> clear >> x=i*j A.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。D A.34 B.354 C.453 D.43 9.下列语句中错误的是()。B A.x==y==3 B.x=y=3 C.x=y==3 D.y=3,x=y 10.find(1:2:20>15)的结果是()。C A.19 20 B.17 19 C.9 10 D.8 9 11.输入字符串时,要用()将字符括起来。C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。A A.9 B.11 C.7 D.18

第2章 MATLAB数据及其运算

MATLAB应用 第2章MATLAB数据及其运算 MATLAB数据的特点 2.1 MATLAB数据的特点 ●矩阵 ●是MATLAB最基本、最重要的数据对象,MATLAB的大部分运算或命令 都是在矩阵运算的意义下执行的,而且这种运算定义在复数域上。向量和单个数据都可以作为矩阵的特例来处理。 ●数值数据 ●双精度型、单精度数、带符号整数和无符号整数。 ●字符数据 ●结构体(Structure)和单元(Cell)数据类型。 ●稀疏矩阵(Sparse) ●逻辑型数据 ●在MATLAB中,以数值1(非零)表示“真”,以数值0表示“假”。 2.2 变量及其操作 ●变量和赋值 ●变量命名的规则 ●变量名的第一个字符必须是英文字母,最多可以包含63个字符。 ●变量名中不能有空格、标点,但可以有下划线如my_var1。 ●变量名、函数名对大小写敏感,如my_data和My_data就不是一个变量。 ●给变量起名时不要和这些保留字冲突。 ●变量不需要事先说明,用赋值语句就定义了变量。变量的类型由赋值语句等号右边的数字 形式决定,免去了高级语言中那种冗长的说明语句。编程过程中,尽量不要与系统变量名冲突,如果你赋值给系统变量,将把变量中的原值冲掉,对计算不利。只有在重新启动后才能恢复原保留值。 2.2 变量及其操作(续) ●赋值语句 ●(1) 变量=表达式 ●(2) 表达式 ●其中表达式是用运算符将有关运算量连接起来的式子,其结果是 一个矩阵。

例2.1 计算表达式的值,并将结果赋给变量x,然后显示计算结果。 在MATLAB命令窗口输入命令: 常用MATLAB预定义变量 2.2 变量及其操作(续) ●数据的输出格式 ●MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。 ●在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。 ●MATLAB默认的数据显示格式为短格式(short):当结果为整数,就作为整数显示;当结果是实数,以小数点后四位的长度显示。若结果的有效数字超出一定范围,以科学计数法显示(如 3.2000e-006表示)。 2.2 变量及其操作(续) ●数据输出时用户可以用format命令设置或改变数据输出 格式。 ●format命令的格式为: format 格式符 其中格式符决定数据的输出格式 控制数据输出的格式符及含义 ●上机练习: ●验证各数据输出格式的输出结果。

数字信号处理-序列的基本运算

离散时间信号的基本运算 离散时间信号(即序列)的基本运算包括移位、反折、求积、乘积、差分运算和尺度变换,下面分别介绍。 1.序列的移位 设某一序列为()x n ,若0m >,则()x n m -表示序列()x n 整体右移了m 个样点形成的新序列,也称()x n m -是()x n 的m 个样点的延迟。此时()x n m +表示序列()x n 整体左移了m 个样点形成的新序列,也称()x n m +是()x n 的m 个样点的超前。例如,()x n 如图3-2-4(a )所示,则(2)x n -和(2)x n +分别如图3-2-4(b )和图3-2-4(c )所示。 (a)() x n (b)(2) x n - (c)(2) x n + 图3-2-4 序列的移位 2.序列的反折 设某一序列为()x n ,则()x n -是以0n =为对称轴将序列()x n 水平翻转,()x n -称为序列()x n 的反折。若()x n 如图3-2-5(a )所示,则()x n -如图3-2-5(b )所示。 (a)() x n (b) () x n - 图3-2-5 序列的反折 3.序列的求和 ()x n 与()y n 两个序列之和是指两个序列同序号(即n 相同)的序列值逐项对就相加构 成一个新的序列()z n ,表示为

【例1】已知1(),1()20,1n n x n n ?≥-?=??<-?,1(),0 ()21,0 n n y n n n ?≥?=??+

实验一____离散时间信号的表示及运算

实验一 离散时间信号的表示及运算 一、 实验目的:学会运用MATLAB 表示的常用离散时间信号;学会运用MATLAB 实现离散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0()0(0 1 )(≠=?? ?=n n n δ (1-1) 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT.m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n);

离散时间信号的表示及运算

实验一 离散时间信号的表示及运算 一、实验目的 学会运用MATLAB 表示的常用离散时间信号;学会运用MATLAB 实现离散时间信号的基本运算。 二、实验原理 (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。(二) 离散时间信号的基本运算 对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB 的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。三、实验内容(包括代码与产生的图形) 1. 试用MATLAB 命令分别绘出下列各序列的波形图。 (1)()()n u n x n ?? ? ??=21 (2)()()n u n x n 2=

(3)()()n u n x n ?? ? ??-=21 (4)()()()n u n x n 2-= (5)()()121 -=-n u n x n (6)()()n u n x n 1 21-? ? ? ??= (1)、(2) n=-3:8; a=1/2; x=a.^n.*uDT(n); subplot(221); stem(n,x,'fill','r'),xlabel('n'),grid on title('(1)x(n)=(1/2)^{n}*U(n)') axis([-3 8 -0.1 1.1]) n1=-3:8; b=2; x=b.^n1.*uDT(n1); subplot(222); stem(n1,x,'fill','r'),xlabel('n'),grid on title('(2)x(n)=(2)^{n}*U(n)') axis([-3 4.5 -1.5 18]) 分析:(1)该信号为指数衰减序列与阶跃序的乘积,当n<0时,U(n)=0,所以该 信号为零;当n=0时,U(n)=1,n ?? ? ??21=1,该信号为1;当n>0,U(n)=1,该信号呈现

连续和离散信号的产生与运算

信号与系统实验报告 课程名称连续和离散信号的产生与运算 学院信息工程 专业班级信工二班 学号 315002253 姓名李小辉 20 17 年6月17日

实验一:连续时间信号的产生与运算 一、实验目的 1.熟悉Matlab软件的使用。 2.掌握连续时间信号表示方法与基本运算的实现。 3.掌握Matlab常用函数来产生信号并实现信号的可视化方法。 二、实验设计 1.ε(t-3): 实验代码: t=-4:0.01:10; t0=3; ut=stepfun(t,t0); subplot(3,3,2),plot(t,ut);title('实验1:u(t-3)') xlabel('时间');ylabel('幅度'); axis([-4,10,-2,2]); 实验结果: 2.cos3t+sin2t:

实验代码: t=0:pi/100:2*pi; f1=sin(2*t); f2=cos(3*t); f=f1+f2; subplot(3,3,1),plot(t,f);title('实验1:sin(2t)+cos3t') xlabel('时间');ylabel('幅度'); axis([0,2*pi,-2,2]) 实验结果: 三、思考题 1.冲激信号与阶跃信号各有什么特性,在本实验中是如何实现冲激信号特性的? 实验二:离散时间信号的产生与运算一、实验目的

1.了解离散时间信号的特点。 2.掌握离散时间信号表示与基本运算方法。 3.掌握信号的分解和用单位脉冲信号表示的方法。 二、实验设计 1.选择一个信号f(k),完成信号f(k)到f(2k+2)的转化 实验代码: t=0:0.5:5*pi; f1=t; f2=2*t+2; subplot(2,1,1),stem(t,f1,'b-*');title('实验2:f(k)=t'); subplot(2,1,2),stem(t,f2,'b-*');title('实验2:(2k+2)') xlabel('时间');ylabel('幅度'); 实验结果: 三、思考题 1.冲激序列信号与阶跃序列信号各有什么特性? 答:单位脉冲序列只在n=0 处有一个单位值1,其余点上皆为0;单位阶跃序列只有在n>=0

04离散时间信号的基本运算

第四讲 离散时间信号的基本运算 在序列的翻转中,原点是一个定位点,它在时间倒置运算中保持不变。在将要讨论的卷积运算中,需要由[]x n 求[]x k n -。 改变采样率与连续时间信号的时域尺度变换有某种相似。考虑一个信号[]x k 以因子M 被压缩。由于离散时间信号仅在变量的整数值上有定义,必须将M 限制为整数值。[]x Mk 在0,1,2,3k =点上的值为[0],[],[2],[3],x x M x M x M 这意味着[]x Mk 在[]x k 中每隔M 个样本取一个值,而删除了两个取值之间的所有样本。由于这个原因,此运算称为抽取。它将样本数减少了M 倍。若[]x k 是由连续时间信号采样得到的话,则此运算意味着将采样率降低了M 倍。因此,抽取也称为减采样。[]x k 到[2]x k ,后者是由剔除[]x k 中奇数样本得到的。使用变换[][21]x k x k =+可以保留[]x k 奇数样本的值(而偶数样本被剔除)。 在连续时间情况下,时间压缩仅仅加速了信号而没有损失任何数据。与此不同的是,[]x k 的抽取通常都会引起数据丢失。在一定条件下,若[]x k 是对某连续时间信号的过(多)采样的结果,则[]x Mk 可能会保存[]x k 的完全信息。 离散时间采样的原理在诸如滤波器设计和实现或在通信中都有很多重要应用。 一个内插信号由两步产生:首先将[]x k 扩展整数因子L 得到扩展信号[]IL x k 。为理解这个表达式,考虑将[]x k 以因子2进行扩展(2)L =这样一个简单情况。扩展后信号2[][2]I x k x k =。当k 为奇数时,2k 不是整数。而[]x k 只在k 的整数点上有定义,其余点为零。因此,当k 为奇数时,2[]0I x k =,也就是222[1][3][5], I I I x x x ==都为零。另外,2k 在k 为偶数时是整数,而2[][2]I x k x k =在0,2,4,6,k =点上的值分别为[0],[1],[2],[3],x x x x 。总之,对0,1,2,k =[]IL x k 由以下序列给出 因此,[]IL x k 的采样率为[]x k 的L 倍。所以这个运算称为扩展。扩展信号[]IL x k 包含了[]x k 的所有数据,尽管是以扩展的形式给出的。 在图中的扩展信号中,缺失(值为零)的奇数样本的值可以通过非零样本以某种适合的内插公式重建。图给出这样一个内插信号[]i x k ,其中缺失样本是通过使用一个内插滤波器恢复出来的。一个最优内插滤波器通常是一个理想低通滤波器,它只能被近似地实现。在实际中,我们使用最优但是可实现的滤波器。对内插的更深入的讨论以超出本课程的范围。这

1.离散序列的产生及时域运算

离散序列的产生及时域运算 实验目的: 1. 熟悉MATLAB编程特点; 2. 掌握利用MATLAB产生各类离散序列的方法; 3. 掌握离散序列的延迟、相加、相乘及平移、反转等运算; 4. 了解利用卷积运算实现信号处理的基本方法。 实验原理: 首先,在用MATLAB表示离散序列并将其可视化时,应注意以下几点: 一、离散时间序列无法用符号运算来表示,要用矩阵或数组向量的形式; 二、由于在MATLAB 中矩阵的元素个数有限,因此,MATLAB无法表示出无限长的序列; 三、在绘制离散信号波形的函数stem命令,而不是plot命令。MATLAB常用信号生成函数有: ★zeros 功能:产生全零阵列 调用格式:x=zeros (n) %产生n行n列的全零矩阵 X=zeros(m,n) %产生m行n列的全零矩阵 ★ones 功能:产生全1阵列 调用格式:x=ones(n) %产生n行n列的全1矩阵 x=ones (m,n) %产生m行n列的全1矩阵 ★rand 功能:产生伪随机序列 调用格式:y= rand(1,n) %产生[0,1]上均匀分布的随机序列,n为序列长度y= randn(1,n) %产生均值为0,方差为1的白噪声序列 ★fliplr 功能:序列左右翻转 调用格式:y= fliplr (x) 需要说明的是,函数fliplr()对信号作时域反折,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量k的。因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量k的范围指定在一个正负对称的时间区间即可。 (一)序列的生成 以下是MATLAB绘制常用离散序列的函数及参考程序: 1.单位脉冲序列 函数ones(1, n)和zeros(1, n)可以生成单位脉冲序列和单位阶跃序列。函数ones(1, n)产生1行n列的由1组成的矩阵;函数zeros(1, n)产生1行n列的由0组成的矩阵。

数字信号处理实验一 时域离散信号的产生与基本运算

实验一 时域离散信号的产生与基本运算 一、实验目的 1、了解常用的时域离散信号及其特点; 2、掌握Matlab 产生常用时域离散信号的方法; 3、掌握时域离散信号简单的基本运算方法; 二、实验内容 1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列; 2、自己设定参数,分别表示并绘制信号移位、信号相加、信号相乘、信号翻转、 信号和、信号积、信号能量。 3、已知信号 ?? ???≤≤-≤≤-+=其他040614452)(n n n n x (1) 描绘)(n x 序列的波形; (2) 用延迟的单位脉冲序列及其加权和表示)(n x 序列; (3) 描绘一下序列的波形 )2()(),2(2)(),2(2)(321n x n x n x n x n x n x -=+=-= 三、实现步骤 1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列。输出图形如图1所示。 x=zeros(1,10); x(2)=1; subplot(3,2,1); stem(x,'filled') axis([0,10,-0.2,1]); title('单位抽样序列'); N=10; u=ones(1,N); subplot(3,2,2); stem(u,'filled') axis([-10,10,0,1]); title('单位阶跃序列'); x=-20:1:20; y=sin(0.2*pi.*x+0.5*pi); subplot(3,2,3); stem(x,y,'filled'); axis([-20,20,-2,2]); title('正弦序列'); n=0:10; a1=1/2; y1=a1.^n; subplot(3,2,4); stem(n,y1,'filled');

离散时间信号的表示及运算

第2章 离散时间信号的表示及运算 2.1 实验目的 ● 学会运用MATL AB 表示的常用离散时间信号; ● 学会运用M ATLAB 实现离散时间信号的基本运算。 2.2 实验原理及实例分析 2.2.1 离散时间信号在MA TLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在M ATL AB中一般用ste m函数。stem 函数的基本用法和p lot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill”、“fil led”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 )0()0(01)(≠=???=n n n δ (12-1) 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在M ATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 fun cti on y=i mpDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例2-1】 利用MAT LAB 的im pDT 函数绘出单位冲激序列的波形图。 解:M ATL AB 源程序为 >>n=-3:3; >>x=impD T(n); >>stem(n,x,'f ill'),xlabel('n'),grid on >>t it le('单位冲激序列') >>a xis ([-3 3 -0.1 1.1])

实验2 离散序列的卷积运算2

数字信号处理实践教程 实验名称:离散序列的卷积运算与抽样定理的验证 指导老师:包建荣 学生姓名:缪慧敏 学生学号:14934204 学生班级:(2)班 所学专业:通信

一.实验目的 学习掌握离散序列卷积运算的原理,理解掌握奈奎斯特抽样定理的原理及验证的方法。 二.实验原理 连续信号抽样及重构原理 将连续信号转换为离散信号的过程称为采样。信号抽样后其频率产生了周期延拓,每隔一个抽样频率重复出现一次。 为保证抽样后信号频谱形状不失真,抽样频率必须大于等于信号中最高频率成分的两倍,这称为奈奎斯特定理。奈奎斯特抽样定理从抽样信号f s(t)恢复原信号f(t)必须满足两个条件: (1)f(t)必须是带限信号,只有带限信号才能适用抽样定理, 即其频谱函数在各处为零; (2)抽样频率不能过低,必须有f s≧2f h。也就是说抽样频率 要足够大,抽得的样值要足够多,才能恢复原信号。

三.实验内容 2.已知某线性时不变系统,其单位冲激响应为h(n)=u(n)-u(n-4),求其在输入序列为x(n)=sin(0.3 )/n[u(n)-n(n-10)]时的零状态响应。 hn=[1,0,0,0,-1]; m=0:10; xn=sin(0.3*pi*m); y=conv(xn,hn); stem(0:length(y)-1,y); grid on; xlabel('n'); ylabel('零状态响应'); -0.1-0.08-0.06-0.04-0.0200.02 0.040.060.080.1 抽样信号 时间/s -20-15-10-50 5101520 抽样信号幅度频谱 频率/Hz

实验一离散信号序列的产生、运算和分解

实验一 离散信号序列的产生、运算和分解 一、实验目的 (1)熟悉MA TLAB 信号处理工具箱的使用; (2)学习和掌握用MA TLAB 产生离散信号的方法; (3)学习和掌握用MA TLAB 对离散信号进行运算。 二、实验设备及环境 PC 计算机一台,MATLAB 运行环境6.0版以上。 三、实验原理 1.单位抽样序列 ???=01)(n δ 00 ≠=n n 在MA TLAB 中可以利用zeros()函数实现。 ; 1)1(); ,1(==x N zeros x 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即: ???=-0 1)(k n δ k n k n ≠= 2.单位阶跃序列 ???01)(n u 00 <≥n n 在MA TLAB 中可以利用ones()函数实现。 );,1(N ones x = 3.正弦序列 )/2sin()(?π+=Fs fn A n x 在MA TLAB 中 )/***2sin(*1 :0fai Fs n f pi A x N n +=-= 4.复指数序列 n j e n x ?=)( 在MA TLAB 中

)**exp(1 :0n w j x N n =-= 5.指数序列 n a n x =)( 在MA TLAB 中 n a x N n .^1 :0=-= 四、实验内容 1、编制程序产生几种常用信号,并绘出其图形 (1)产生单位采样序列)(n δ (2)产生单位阶跃序列)(n u (3)产生矩形阶跃序列 )(R N n 其他1n 001n)(R N -≤≤???=N (4)产生正弦和余弦序列 +∞<≤∞-=n n A n x ) sin()(ω +∞<≤∞-=n n A n y )(cos )(ω 2、编制离散信号序列的常用运算,并绘出其图形 (1)已知两个离散序列??????---==↑3,2,1,0,1,2,3)(01k k f ,??????--==↑2,1,0,1,2)(0 2k k f ,用MATLAB 绘出)()()(21k f k f k f +=的波形。 (2)已知离散序列k k f 32)(?=,利用MA TLAB 绘出其翻转信号。 (3)已知离散信号{}3,2,1,0,1,2,3)(---=k f ,利用MA TLAB 绘出)3(+k f 波形。 (4)已知两个离散序列??????==↑3,3,3,1)(01k k f ,?? ????==↑4,3,3,2,1)(02k k f ,利用MATLAB 绘出原信号及其

相关文档
相关文档 最新文档