数字信号处理实验报告一.docx
《数字信号处理实验报告一.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告一.docx(15页珍藏版)》请在冰豆网上搜索。
![数字信号处理实验报告一.docx](https://file1.bdocx.com/fileroot1/2022-11/14/64eee313-2511-4a58-ac71-c8108d648058/64eee313-2511-4a58-ac71-c8108d6480581.gif)
数字信号处理实验报告一
数学与计算科学学院
《数字信号处理》实验报告
题目:
熟悉MATLAB环境及简单序列运算
专业:
信息与计算科学
学号:
1309301-11
姓名:
周露
指导教师:
胡振华教授
成绩:
二零一五年十一月二十日
目录
一实验目的…………………………………………………………1
二实验内容及结果…………………………………………………2
一、实验目的
(1)熟悉MATLAB的主要操作命令;
(2)学会简单的矩阵输入和数据读写;
(3)掌握简单的绘图命令;
(4)用MATLAB编程并学会创建函数。
二、实验内容及结果
认真阅读讲义前面的“MATLAB简介”和本实验的“实验说明及程序示例”部分,在MATLAB环境下选择简介和说明中的部分例子重做一遍,体会各条命令或指令的含义。
在熟悉了MATLAB的基本命令的基础上,完成以下实验。
1.序列(一维数组)、矩阵(多维数组)的输入和特殊序列、矩阵的产生。
(1)输入A=[1234],B=[1,2,3,4],C=[1;2;3;4],D=[123;456;789],E=[1,2,3;4,5,6;7,8,9],比较各个变量的结果及特点。
结果:
输入如题要求代码后可知:
A和B皆为一行四列的矩阵;
C为一列四行的矩阵;
D和E皆为三行三列的矩阵。
(2)采用“
”形式的指令(语句)产生一个等差序列,该序列A的初值为a、终值为b(或略小于b的一个值)、等差为x(若等差为1则可缺省该值)。
产生一个n=0,1,2,…,15的序列;改变a,x,b的值,比较各序列的结果与特点。
代码:
A=0:
15
便产生了一个n=0,1,2,…,15的序列;
改变a,x,b的值如下
代码:
A=0:
2:
15
结果:
A=
02468101214
显然当x无法整除b时,产生序列的终值会小于b
(3)利用ones,zeros,randn函数分别产生各个元素为“全1、全0、正态分布随机数”的序列和矩阵(行序列就是1×N的矩阵,而列序列就是N×1的矩阵)。
改变函数参数,比较各个结果。
代码:
A=zeros(1,4)
B=zeros(4,1)
C=ones(1,4)
D=ones(4,1)
E=randn(1,4)
F=randn(4,1)
便产生了如题要求矩阵,改变括号的参数(x,y),便会产生x行y列的“全1、全0、正态分布随机数”的矩阵。
2.序列的简单运算。
输入A=[1234],B=[5678],求C=A+B,D=A-B,E=A.*B,F=A./B,H=A.^3,I=A.^B,比较各个序列的结果(注意体会对应“点运算”的特点),并用stem语句画出各个序列。
代码:
A=[1234],B=[5678]
C=A+B
D=A-B
E=A.*B
F=A./B
H=A.^3
I=A.^B
结果:
A=
1234
B=
5678
C=
681012
D=
-4-4-4-4
E=
5122132
F=
0.20000.33330.42860.5000
H=
182764
I=
164218765536
画图代码stem(c)
Stem(D)
Stem(E)
Stem(F)
Stem(H)
Stem(I)
3.矩阵的简单运算。
输入A=[123;456;789],B=[316;792;584],求C=A+B,D=A-B,E=A*B,F=A.*B,G=A/B,H=A./B,I=A^2,J=A.^2,K=A.^B。
比较各个矩阵的结果(注意体会对应“点运算”的特点)。
代码:
A=[123;456;789],B=[316;792;584]
C=A+B
D=A-B
E=A*B
F=A.*B
G=A/B
H=A./B
I=A^2
J=A.^2
K=A.^B
结果:
C=
439
11148
121613
D=
-21-3
-3-44
205
E=
324322
779758
12215194
F=
3218
284512
356436
G=
0.1574-0.45370.7407
0.5185-0.25930.8519
0.8796-0.06480.9630
H=
0.33332.00000.5000
0.57140.55563.0000
1.40001.00002.2500
I=
303642
668196
102126150
J=
149
162536
496481
K=
12729
16384195312536
16807167772166561
4.应用函数length、size求取序列和矩阵的大小。
先输入或生成一个序列和矩阵,用上述函数求序列和矩阵的大小,体会二者的作用和不同之处。
代码:
A=[123;456;789]
B=[1234]
l=length(B)
[n,m]=size(A)
结果;
l=
4
n=
3
m=
3
*5.采用rand函数分别产生两个长度不同的序列A、B。
(1)修改序列A部分元素的值:
将A的中间4~5个元素的值修改为“1”;
(2)将A、B中长度较长的序列截短,使二者长度一致;
(3)将A、B中长度较短的序列在后面补零加长,使二者长度一致;
(4)求序列C:
长度为A的一半,且各元素为A、B前一半元素的对应相加。
(1)代码:
A=rand(1,5)
B=rand(1,4)
A(2:
5)=1
结果:
A=
0.96490.15760.97060.95720.4854
B=
0.80030.14190.42180.9157
A=
0.96491.00001.00001.00001.0000
(2)代码A=rand(1,5)
B=rand(1,4)
l=length(B)
A=A(1:
l)
结果
A=
0.39220.65550.17120.70600.0318
B=
0.27690.04620.09710.8235
l=
4
A=
0.39220.65550.17120.7060
(3)代码:
A=rand(1,5)
B=rand(1,4)
l=length(A)
B(l)=0
结果:
A=
0.07590.05400.53080.77920.9340
B=
0.12990.56880.46940.0119
l=
5
B=
0.12990.56880.46940.01190
(4)代码:
A=rand(1,6)
B=rand(1,4)
l=(length(A))/2;
a=A(1:
l);
b=B(1:
l);
c=a+b
结果:
A=
0.24000.41730.04970.90270.94480.4909
B=
0.48930.33770.90010.3692
c=
0.72920.75500.9497
6.绘出下列时间函数的图形(注意:
t的取值点选取合理,使绘出的图形恰当!
),对图形的X轴Y轴以及图形上方均须加上适当的标注:
(1)
;
(2)
。
(1)代码:
t=0:
0.1:
3
y=sin(t)
plot(y)
结果
(2)代码:
t=0:
0.1:
4
y=(cos(20*pi*t)).*(sin(pi*t))
plot(y)
结果:
7.编写函数weight_add(x1,x2,w),实现两个序列x1(n)、x2(n)的加权和运算:
。
函数参数中,x1、x2为输入序列,w为权值。
给定两个序列x1、x2,绘出原序列和函数执行后得到的序列图形。
运行代码:
function[y]=weight_add(x1,x2,w)
y=w.*x1+(1-w).*x2;
end
x1=randn(1,5)
x2=randn(1,5)
w=randn(1,5)
C=weight_add(x1,x2,w);
stem(C)
运行结果:
*8.编写函数stepshift(n0,n1,n2),实现u(n-n0),n1绘出该函数的图形(起点为n1,终点为n2)。
n1=input('请输入起点:
');
n2=input('请输入终点');
n0=input('请输入阶跃位置');
n=n1:
n2;
x=[n-n0>=0];
stem(n,x,'fill');xlable('时间序列n');
ylable('u(n-n0)')
运行结果:
请输入起点:
2
请输入终点8
请输入阶跃位置6