matlab报告.docx
- 文档编号:29930316
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:19
- 大小:112.61KB
matlab报告.docx
《matlab报告.docx》由会员分享,可在线阅读,更多相关《matlab报告.docx(19页珍藏版)》请在冰豆网上搜索。
matlab报告
实验环境
MATLAB6.5
实验名称
实验一:
熟悉MATLAB环境及Matlab基本操作
实验目的
1、熟悉MATLAB环境及各种基本Matlab操作
实验原理
Matlab以矩阵运算为基础,把程序设计,数学计算,可视化有机的融合到一个简单易学的交互式工作环境中,具有出色的数值计算能力和强大的图形处理功能。
Matlab系统有matlab内核和辅助工具箱组成,是有大量的内部函数和用户自定义的函数构成。
通过对这些函数的调用,可以简便的处理很多学科的各种具体问题。
MATLAB的桌面环境包含历史命令窗口(CommandHistory)、命令行窗口(CommandWindow)、当前目录浏览器(CurrentDirectoryBrowser)、工作空间浏览器(WorkspaceBrowser)、目录分类窗口(LaunchPad)、数组编辑器(ArrayEditor)、M文件编辑器/调试器(Editor/Debugger)、超文本帮助浏览器(HelpNavigator/Browser),这些窗口都可以内嵌在MATLAB主窗体中,组成MATLAB的用户界面。
在默认的MATLAB界面中,命令行历史窗口总是在MATLAB界面的左下角,和命令行窗口类似,命令行历史窗口也可以浮动出来,单击命令行历史窗口界面上按钮,就可以浮动该窗口。
在命令行历史窗口中主要记录了在MATLAB命令行窗口中键入的所有指令,一般包括每次启动MATLAB的时间,以及每次启动MATLAB之后键入的所有MATLAB指令。
MATLAB的命令行窗口不仅可以内嵌在MATLAB的用户界面中,还可以浮动在界面上,单击命令行窗口上的按钮,就可以浮动命令行窗口。
命令行窗口最具特色的就是其命令回调的功能,也就是说在MATLAB的命令行窗口键入任意算术表达式,系统将自动解算,并给出结果。
在MATLAB的命令窗口中还可以定义相应的MATLAB数据对象和变量以及调用函数。
MATLAB的功能是通过大量的M语言函数或者MATLAB内建的指令来完成的,在命令行窗口中,调用这些函数的方法就是直接键入函数或者指令,并且根据不同的函数提供相应的参数列表。
MATLAB的命令行窗口具有命令行记忆的功能,也就是说,在命令行窗口中,使用上、下光标键就可以重复以前键入的指令了,这对使用MATLAB是非常便利的功能。
而且MATLAB还具有局部记忆的功能。
MATLAB当前路径的浏览器—(CurrentDirectory)用于MATLAB加载文件、执行指令。
该工具在默认的情况下位于MATLAB界面的左上方,在工作空间浏览器的下面。
实验内容
<验证性实验>
1、将Matlab当前目录变更到D:
\自己姓名拼音文件夹下,并建立新文件画出y=2*x的曲线,并将曲线图形保存在当前目录下。
2、使用for语句及while语句求解1至100整数中奇数的和。
<设计性实验>
3、用MATLAB程序建立九九乘法表。
4、求连续自然数的和,当和大于等于1000时,求最后一个自然数以及自然数的和。
5、MATLAB函数是可以递归调用的,即在函数的内部调用函数自身,试用递归方式编写n!
函数。
实验结果及分析
1.源程序代码:
x=1:
100;
y=2*x;
plot(x,y,'b*');
grid
实验结果图示:
分析:
这个编程是最简单的绘制一个二维的坐标图,先要定义变量,再用plot()函数来实现。
在我的编程过程中,我觉得最重要的是要定义好变量的间隔。
实验结果及分析
2.源程序代码:
(1)sum=0;
fori=1:
2:
100
sum=sum+i;
end
str=['计算结果为:
',num2str(sum)];
disp(str)
(2)sum=0;
i=1;
while(i<=100)
ifmod(i,2)==1
sum=sum+i;
i=i+2;
end
end
str=['计算结果为:
',num2str(sum)];
disp(str)
实验结果:
2500
分析:
(1)先定义变量sum以及i的初值,再定义i的间隔,就很容易的能找到100以内的所有奇数,再嵌
入for循环,将所有的奇数相加;
(2)先定义变量sum以及i的初值,通过while循环以及mod函数判断i是否满足100以内的所有奇数,i值每次增加2,将所有奇数相加。
3.源程序代码:
fori=1:
9
forj=1:
i
fprintf('%d*%d=%d\t',j,i,j*i);
end
fprintf('\n')
end
实验结果:
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
1*5=52*5=103*5=154*5=205*5=25
1*6=62*6=123*6=184*6=245*6=306*6=36
1*7=72*7=143*7=214*7=285*7=356*7=427*7=49
1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
分析:
定义变量i为行向量上的数值,变量j为列向量上的数值,使用了for循环的嵌套,通过j*i即可输出9*9乘法表。
实验结果及分析
4.源程序代码:
s=0;
fori=1:
100
s=s+i;
ifs>=1000
break;
end
end
fprintf('i=%d\ns=%d\n',i,s)
实验结果:
i=45
s=1035
分析:
这个编程主要是运用了for循环,当sum的值小于1000时,一直执行循环,当不满足条件时,就跳出循环。
这时sum的值已经大于或者等于1000的时候就是题目所要求的值。
5.源程序代码:
functiony=fun(n)
ifn==0
y=1;
else
y=n*fun(n-1);
end
实验结果:
fun(3)
y=6
分析:
先编写一个求阶乘的函数,如果要计算某个数的阶乘时,直接调用此函数就可以了。
主要理解递归调用的含义。
实验名称
实验二:
Matlab在通信原理中的应用
实验目的
1、掌握通信原理课程中基本知识的Matlab编程、仿真方法
实验原理
基于MATLAB平台可以实现模拟调制中的幅度调制,角度调制和数字频带传输中的二振幅键控、频移键控、相移键控的仿真。
实验内容
(包括实验内容,设计方案、步骤,实验源程序)
<设计性实验>
1、用Matlab产生一个频率为2Hz、功率为1的正弦信源m(t),设载波频率为10Hz,A分别等于0.5、1、1.5,试画出:
(1)AM调制信号;
(2)调制信号的功率谱密度;
(3)相干解调后的信号波形(选做)
(4)研究调制深度与失真的关系。
(选做)
<设计性实验>(选做)
2、消息
是周期为2s的周期信号,它在区间
的定义如下:
该信号用DSB方案调制50Hz的载波。
(1)绘出调制信号。
(2)绘出调制信号的频谱。
(3)比较调制信号和未调制信号的频谱。
3、(选做)消息信号
采用频率调制为1000Hz的载波。
频偏常数为
。
(1)确定调制信号瞬时频谱的范围。
(2)确定调制信号的带宽。
(3)绘出消息信号和调制信号的频谱。
(4)确定调制系数。
(5)加载白噪声后,重新绘出消息信号和解调信号的频谱及解调器输出的功率谱密度。
4、(选做)在Simulink仿真环境下,建立DPCM通信系统的仿真模型,绘出输入波形、编码后波形和输出波形,计算信噪比。
实验结果及分析
<设计性实验>1的源程序代码:
dt=0.001;
fm=2;
fc=10;
T=5;
t=0:
dt:
T;
mt=sqrt
(2)*sin(2*pi*fm*t);
%N0=0.01;
%AMmodulation
A=0.5;
s_am=(A+mt).*sin(2*pi*fc*t);
B=2*fm;
%noise=noise_nb(fc,B,N0,t);
%s_am=s_am+noise;
subplot(311)
plot(t,s_am);holdon;
plot(t,A+mt,'r--');
title('AM调制信号及其包络');
xlabel('t');
fs=100;
t1=0:
1/fs:
1;
mt=sqrt
(2)*sin(2*pi*fm*t1);
P=(A+mt).*sin(2*pi*fc*t1);
y=fft(P,512);
n=0:
511;f=48*n/512;
subplot(312)
plot(f,abs(y));grid;
title('AM调制信号的頻谱');
xlabel('f')
实验结果及分析
实验结果图示:
分析:
通过编程定义了输入信号后,频率,采样间隔等。
以及白噪声的相关参数,而且调用了一些程序中需要的子程序。
最后用plot()函数输出了所要求的而为图形。
实现了AM幅度调制和相干解调,但相干解调后的波形与理论波形比起来,幅度上存在偏差。
同时得到AM信号的功率谱,都是调用的子函数得以实现的,实现了实验预期目的。
我觉得最重要的是先要将所需的子函数与自己编写的程序放到同一文件夹中。
在编写的时候,要注意定义频率以及采样间的大小,以便能清楚地得到图形。
实验名称
实验三Matlab在信号与系统中的应用
实验目的
1、掌握信号与系统课程中基本知识的Matlab编程、仿真方法
实验原理
基于MATLAB平台可以对信号与系统中的部分内容进行仿真分析。
MATLAB用连续信号在等时间间隔点的样值来近似的表示连续信号,当取样时间间隔足够小时,这些离散的值就能较好的近似表示连续信号。
在MATLAB中,连续信号可用向量或符号运算功能来实现。
要基本掌握simulink的用法,会用这个方法仿真一些实验的结果,达到研究的目的。
实验内容
(包括实验内容,设计方案、步骤,实验源程序)
<设计性实验>
1、用MATLAB在时域中编程求解y′(t)+y(t)=f(t),f(t)=ε(t)的冲激响应、阶跃响应及零状态响应。
在simulink仿真环境下,设计系统框图,分析系统的冲激响应、阶跃响应。
<设计性实验>(选做)
2、用MATLAB在时域中编程求解y′(t)+y(t)=f(t),f(t)=(1+exp(-3t))ε(t)的冲激响应、阶跃响应及零状态响应,要求用conv编程实现系统响应。
在simulink仿真环境下,设计系统框图,分析系统的冲激响应、阶跃响应及零状态响应。
实验结果及分析
<设计性实验>1的源程序代码:
a=[1,1];
b=[1];
subplot(3,1,1)
impulse(b,a)%冲激响应的时域波形
subplot(3,1,2)
step(b,a)%阶跃响应的时域波形
t=0:
0.5:
5;%定义时间范围向量
sys=tf(b,a)%定义系统函数对象
f=exp(0.*t)%定义输入信号
subplot(3,1,3)
lsim(sys,f,t)%对系统输出信号进行仿真
实验结果图示:
分析:
本实验是参考实验书上的,主要掌握好三个函数的用法就能简单的编写出来,即step(b,a),impulse(b,a),lsim(b,a,f,t)。
而且为了使得到的图形光滑一些,变量p的间隔应尽量设置的小一些,我之前设置的间隔较大的时候就会出现一些特别明显的波动,特别是在斜率较大的地方,这就会影响我们分析问题,所以这是值得注意的一点。
实验结果及分析
simulink仿真设计系统方框图:
simulink仿真环境下系统的冲激响应、阶跃响应:
分析:
实现冲激响应和阶跃响应的仿真,主要就是要画出正确的方框图,再就是要设置好合理的参数。
实验名称
实验四Matlab在数字信号处理中的应用
实验目的
1、掌握数字信号处理课程中基本知识的Matlab编程、仿真方法
实验原理
1.离散时间信号的一般表示。
例如要实现y=sin(2pif1t)+2sin(2pif2t),其中fs=1khz,f1=50hz,f2=120hz.实现方法如下:
f1=50;f2=120;fs=1000;
t=0:
1/fs:
1;
y=sin(2*pi*f1*t)+2sin(2*pi*f2*t);
Plot(t,y)
2.离散傅里叶变换及其快速算法。
离散傅里叶变换提供了绝对可和序列在频域中的表示方法。
Z变换提供任意序列的频域表示方法。
这两种变换的共同特点是:
变换的结果是连续函数。
实验内容
<设计性实验>
1、对于连续信号x(t)=1+cos(2πft),其中f=5kHz,分别以采样频率fs=6kHz和fs=12kHz对其进行采样,
(1)分别绘出对应的采样信号。
(2)对信号进行傅里叶变换,绘出对应的曲线。
(3)在simulink仿真环境下,设计系统框图,观察信号的频谱成分。
<设计性实验>(选做)
2、对于连续信号
,其中
,
,对信号进行傅里叶变换。
设计合适的采样频率对信号进行采样。
对信号进行快速傅里叶变换FFT,分析信号的频谱成分。
在simulink仿真环境下,设计系统框图,分析信号的频谱成分。
实验结果及分析
<设计性实验>1的源程序:
clearall;
f1=6000;
f2=12000;
fs=5000;
t1=0:
1/f1:
0.01;
y1=1+cos(2*pi*fs*t1);
s1=fft(y1,1024);
n=0:
1023;f=6000*n/1023;
subplot(4,1,1);
plot(f,abs(s1));grid;
figure
(1)
plot(t1,y1);
t2=0:
1/f2:
0.01;
y2=1+cos(2*pi*fs*t2);
subplot(4,1,2);
plot(t2,y2);
s1=fft(y1,1024);
n=0:
1023;f=6000*n/1023;
subplot(4,1,3);
plot(f,abs(s1));grid;
s2=fft(y2,1024);
n=0:
1023;f=12000*n/1023;
subplot(4,1,4);
plot(f,abs(s2));grid;
实验结果图示:
实验结果及分析
分析:
在参考实验书的情况下,明白了怎样定义采样函数。
以及怎样用matlab来实现信号的采样。
还有就是要定义好采样间隔的时间,在本题中定义了两个变量,就是采样频率。
我们可以从图形看出,采样后的信号确实是应为采样频率的变化而又所不同的。
主要是调用了函数s=fft(y,1024);其他的就是利用之前学的东西了。
就是定义时间隔,显示设置subplot()的用法,显示而为图形的plot()函数的用法,这些就是非常熟悉的函数了,所以此编程相对来说还是比较简单的。
在simulink仿真环境下,采样频率fs=6kHz,设计的系统框图:
在simulink仿真环境下,采样频率fs=6kHz,信号的频谱成分:
实验结果及分析
在simulink仿真环境下,采样频率fs=12kHz,设计的系统框图:
在simulink仿真环境下,采样频率fs=12kHz,信号的频谱成分:
分析:
画好图后,最重要的是参数的设置,如果设置的参数不合理,就出不来图,所以了解每一个元件的参数设置尤为重要。
实验总结
通过这些天对MATLAB的学习,我基本上达到了实验的目的,从中也学到了一些非常有用的东西,下面对每一个实验做一下简单总结:
在实验一中,因为自已以前就接触过大量的MATLAB编程,所以对于这一部分的基本应用还算是得心应手。
最让我满意的是九九乘法表的程序,感觉自己编写的还算精简成功。
让我更进一步加深了对一些常用的条件语句和循环语句的认识。
不过也出现了一点问题,就是递归调用的时候没有正确命名文件,犯了一个很大的错误,通过老师的指点让我受益匪浅。
在实验二中,就主要涉及了通信原理的知识,AM波的调制图形以及功率谱的图形绘制都是需要我们掌握的,在编写的时候,要注意定义频率以及采样间的大小,以便能清楚地得出图形。
在实验三中,信号与系统中的应用。
主要掌握好三个函数的用法就能简单的编写出来,即step(b,a),impulse(b,a),lsim(b,a,f,t)。
而且为了使得到的图形光滑一些,变量p的间隔应尽量设置的小一些。
实现冲激响应和阶跃响应的仿真,主要就是知道应该使用哪些器件,再就是要设置好合理的参数。
在实验四中,采样频率对波形的影响是显而易见的,还有就是要定义好采样间隔的时间,所以我掌握了怎样通过采样频率来控制波形,在仿真环节,就是参数设置最重要,也是关键。
总之,在实验过程中知道了很多函数的用法,尤其是函数的递归调用。
还有,对于绘图之类的就有了一个整体的把握,能运用这门课所学的内容更好地服务专业课学习。
此外,就是学会了仿真,对于我们专业而言是非常有用的,对以后的设计研究工作都有很大的帮助。
我知道,我们现在所学的也只是一些最简单的,比如说插值、拟合等。
我认为MATLAB应该还有一些非常强大的功能,想要更好的运用它,还需要我们在以后的时间多下功夫。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 报告