信息处理与仿真实验

更新时间:2024-04-20 19:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信息处理与仿真实验实验报告

52110923 唐娜

实验一 熟悉MATLAB工作环境

一、实验目的

1.熟悉启动和退出MATLAB软件的方法。 2.熟悉MATLAB软件的运行环境。 3.熟悉MATLAB的基本操作。 二、实验设备及条件 计算机一台。 三、实验内容 1.练习下面指令:

Cd,clc,clear,dir,path,help,who,whos,save,load。

2.建立自己的工作目录‘姓名+学号’和MYDATA,并将它们分别加到搜索路径的前面或者后面。

3. 输入矩阵及查看、修改其元素

?123??, 456输入矩阵ty??????789??双击Workspace窗的ty名称,可显示ty的各元素。 把ty(3,3)改为12。

4.M文件的建立,建立M文件,求出下列表达式的值:

x?sin(100?t)

function x=f_mysin(t)

t=0:0.0001:0.2;

x=sin(100*pi*t); % 正弦幅度,单位毫伏(mv) plot(t,x), % 画余弦波形

xlabel('时间 t(s)') % x坐标名称 ylabel('幅度 x(mv)') % y坐标名称 title('一个正弦波形') % 图形名称

2

5.利用MATLAB的帮助功能分别查询inv、plot、max、round函数的功能和用法。

Inv:求矩阵的逆 Plot:画图

Max:求最大值函数

Round:对一个数进行四舍五入取整;

实验二 MATLAB的基本计算

一、实验目的

1.掌握建立矩阵的方法。

2.掌握MATLAB各种表达式的书写规则以及常用函数的使用。 3.能用matlab进行基本的数组、矩阵及符号运算。 4.掌握矩阵分析的方法以及能用矩阵求逆法解线性方程组。 二、实验设备及条件

计算机一台(带有MATLAB6.0以上的软件环境)。 三、实验内容

1.利用diag等函数产生下列矩阵。

?058??204?? b??050? a??3?70???????200???708??

2.利用reshape函数将1题中的a和b变换成行向量。

3

A =

0 3 2 5 -7 0 8 0 0 B =

2 0 7 0 5 0 4 0 8

3.产生一个均匀分布在(-5,5)之间的随即矩阵(10×2),要求精确到小数点后一位。

a=[-5,-2.5,-1.2,0,1,2,2.5,3.2,5]; round(a); a =

-5.0000 -2.5000 -1.2000 0 1.0000 2.0000 2.5000 3.2000 5.0000

4.已知:

?1234?4??13?1?? B??20? A??347873???????3657???3?27??求下列表达式的值:

(1) K11?A?6*B和K12?A?B?I(其中I为单位矩阵) (2) K21?A*B和K22?A.*B (3) K31?A^3和K32?A.^3 (4) K41?A/B和K42?B\\A

(5) K51?[A,B]和K52?[A([1,3],:);B^2]

4

A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; I=[1 0 0;0 1 0;0 0 1]; k11=A+6*B;

k12=A-B+eye(3); k21=A*B; k22=A.*B; k31=A^3; k32=A.^3; k41=A/B; k42=B\\A; k51=[A,B];

k52=[A([1,3],:);B^2];

k12 =

12 31 -3 32 8 84 0 67 1 >> k11 k11 =

18 52 -10 46 7 105 21 53 49 >> k21 k21 =

68 44 62 309 -72 596

5

154 -5 241 >> k22 k22 =

12 102 4 68 0 261 9 -130 49 >> k31 k31 =

37226 233824 48604 247370 149188 600766 78688 454142 118820 >> k32 k32 =

1728 39304 -64 39304 343 658503 27 274625 343 >> k41 k41 =

6

16.4000 -13.6000 7.6000 35.8000 -76.2000 50.2000 67.0000 -134.0000 68.0000 >> k42 k42 =

109.4000 -131.2000 322.8000 -53.0000 85.0000 -171.0000 -61.6000 89.8000 -186.2000 >> k51 k51 =

12 34 -4 1 3 -1 34 7 87 2 0 3 3 65 7 3 -2 7 >> k52 k52 =

12 34 -4 3 65 7 4 5 1 11 0 19

7

20 -5 40

5.下面是一个线性方程组:

?1/21/31/4??x1??0.95??1/31/41/5??x2???0.67? ????????1/41/51/6????x3????0.52??(1)求方程的解。

(2)将方程右边向量元素b3改为0.53,再求解,并比较b3的变化和解的相对变化。

A=[ 1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6];

B=[0.95;0.67;0.52]; X=inv(A)*B;

6.利用randn函数产生均值为0,方差为1的6×6正态分布随机矩阵C,然后统计C中

8

大于-0.3,小于0.3的元素个数t。

h=randn(6);

t=sum(sum(h>-0.3&h<0.3)); >> t t =

10

7.建立一个矩阵A,找出矩阵中值大于1的元素,并将它们重新排列成行向量B,例如

5?28??01?3?49?3?8?。 A???0362?1???00551?2??

A=[0 1 5 -2 8;3 -4 9 3 -8;0 3 6 2 -1;0 0 55 1 -2];

find(A<=1)=[]; C=A; C;

9

8.读以下程序,解释指令sprintf、fprintf、sscanf的作用?

rand('state',0); a=rand(2,2); s1=num2str(a)

s_s=sprintf('%.10e\\n',a) fprintf('%.5g\\\\',a)

s_sscan=sscanf(s_s,'%f',[3,2])

sprintf:字符串格式化

fprintf:格式化输出到一个流/文件中;

sscanf:从一个字符串中读进与指定格式相符的数据

实验三 MATLAB图形系统

10

5.海尔,联想,方正近四年销售的数据如下。

data=[3000,2334,3444,6663;2342,3422,2111,4453;3232,2334,5433,3500];

请做出如下图表。(参考bar,legend)

图3-5 销售比较图

a=[3000 2334 3444 6663;2342 3422 2111 4453;3232 2334 5433 3500]; bar(a);

label={'海尔','联想','方正'}; set(gca,'xticklabel',label);

title('各品牌销售比较图');

legend('2006','2007','2008','2009');

16

6.已知在三维空间里,x,y,z的变化规律如下,试用plot3来做出其图形。 z = 0:0.1:40; x = cos(z).^2; y = sin(z)+cos(z);

z = 0:0.1:40; x = cos(z).^2;

y = sin(z)+cos(z); plot3(x,y,z) grid on

axis square

7. 根据下面的方程绘制图形,y=sin(x)+x,然后再分别用多项式拟合函数和用拟合工

具进行拟合。(参考polyfit, polyval)

x=-pi:0.1:pi;

17

y=sin(x)+x;

p = polyfit(x,y,6); f = polyval(p,x);

plot(x,y,'o',x,f,'-'); axis([-1 4 0 5]);

8. 在0-450范围内,x,y均每隔50产生一个数,这样产生一个10*10网格区域,用randn函数

来产生一个10*10的随机矩阵(标准差是10,平均数是20),使用surf来作出这个三维的曲面图。然后使用interp2进行二次插值,插值函数使用三次杨条插值函数,在原来的第一个分隔区域里产生5个小区域,并最后画出图形。(参考meshgrid)

x=0:50:450; y=0:50:450;

[px,py]=meshgrid(x,y); z=10*randn(10,10)+20; subplot(2,1,1); surf(px,py,z); xi=0:10:450; yi=0:10:450;

[pxi,pyi]=meshgrid(xi,yi);

zi=interp2(x,y,z,xi,yi','spline'); subplot(2,1,2); surf(pxi,pyi,zi);

18

实验四 MATLAB函数编写和程序设计

一、实验目的

1.掌握函数的编写规则。 2.掌握函数的调用。

3.会用Matlab程序设计实现一些工程算法问题。 二、实验设备及条件

计算机一台(带有MATLAB6.0以上的软件环境)。 三、实验内容

1.生成谐波信号x=sin(100*pi*t)+sin(240*pi*t),绘制谐波信号的时域波形和傅里叶幅度谱。

t=0:0.00001:0.4;

x=sin(100*pi*t)+sin(240*pi*t); plot(t,x);

axis([0 0.4 -2 2]);

19

t=0:0.0001:0.4;

x=sin(100*pi*t)+sin(240*pi*t); y=fft(x); z=abs(y) plot(t,z);

axis([-0.1 0.5 0 10]);

2.生成方差为2的高斯白噪声,加入1中谐波信号,绘制含噪信号的时域波形和频谱

t=0:0.001:0.4;

x=sin(100*pi*t)+sin(240*pi*t); y=x+2*randn(size(x)); plot(t,y);

axis([0 0.4 -10 10]);

t=0:0.001:0.4;

x=sin(100*pi*t)+sin(240*pi*t); y=x+2*randn(size(x)); n=fft(y);

20

z=abs(n); plot(t,z);

axis([0 0.4 0 100]);

3.设计滤波器,对噪信号进行滤波,比较滤波前后波形和频谱的变化。 [s,w,v] = cheby2(1,30,100/400); [sos,g] = zp2sos(s,w,v);

Hd = dfilt.df2tsos(sos,g); x=0:0.0001:0.1;

y1=sin(100*pi*x)+sin(240*pi*x); y=y1+2*randn(size(y1)); subplot(2,2,1); plot(y); title('滤波前'); m1=fft(y); m=abs(m1); subplot(2,2,2); plot(m);

title('滤波前频谱'); sf=filter(Hd,y); subplot(2,2,3); plot(sf); title('滤波后'); b1=fft(sf); b=abs(b1);

21

subplot(2,2,4); plot(b);

title('滤波后频谱')

4用m文件实现上述滤波过程。 四、设计提示

1.设计滤波器时,注意频率的归一化。

2.Chebyshev Ⅱ型模拟高通滤波器设计,用函数cheby2(n,Rs,Wn,'high','s')。其中Rs=30(即表示:阻带纹波不超过-30dB)。

3.设计IIR带通或带阻滤波器时,若给滤波器函数的参数为n,则设计出来的是2n阶的滤波器。

4.设计高通滤波器,用'high'关键字;带通用'bandpass'关键字。 5.查看模拟滤波器的频率响应曲线用freqs函数,查看数字滤波器的频率响应曲线用freqz函数。

6.对于FIR滤波器的设计,第一通带如果从0开始,则应加关键字'DC-1'。(参考fir1) 五、思考题

根据频谱中归一化频率和模拟频率的对应关系,确定并显示谐波信号的频率。

实验五 SIMULINK仿真实验

一、实验目的

1.熟悉Simulink的操作环境并掌握绘制系统模型的方法。 2.掌握Simulink中子系统模块的建立与封装技术。

22

3.对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。 二、实验设备及条件

计算机一台(带有MATLAB6.0以上的软件环境)。 三、实验内容

1.建立下图5-1所示的Simulink仿真模型并进行仿真,改变Gain模块的增益,观察Scope显示波形的变化。

图5-1 正弦波产生及观测模型

增益为1

23

9Tf?Tc?322.利用simulink仿真来实现摄氏温度到华氏温度的转化:(Tc范围在-10℃~

5100℃),参考模型为图5-2。

图5-2 摄氏温度到华氏温度的转化的参考模型

24

3.利用Simulink仿真下列曲线,取??2?。

1111x(?t)?sin?t?sin3?t?sin5?t?sin7?t?sin9?t。

3579仿真参考模型如下图5-3,Sine Wave5模块参数设置如下图5-4,请仿真其结果。

图5-3 x(?t)的仿真参考模型图 图5-4 Sine Wave5模块参数设置图

25

4. 著名的Lorenz模型的状态方程为

?1(t)???x1(t)?x2(t)x3(t)?x??2(t)???x2(t)??x3(t)x? ?x??3(t)??x1(t)x2(t)??x2(t)?x3(t)初值x1(0)=x2(0)=x3(0)=1e-10,利用Simulink建立并封装子系统来求解该方程组,子系统为y?ax1(t)?bx2(t)。考察参数分别为σ=10,β=8/3,ρ=28,以及σ=1,β=2,ρ=1时系统的状态,绘制出时间曲线和相空间曲线(时间从0到100)。

(注:这里相空间曲线即为将X1(t)、X2(t)、X3(t)分别作为x,y,z轴坐标画在一个三维坐标系中plot3)

26

3020100-10-20-3020100-10-2001020304050

实验六 图像处理GUIDE设计

一.实验目的

1了解开发GUI的不同方法 2初步掌握GUI的向导生成方案

3基本掌握句柄的获取方法以及界面图形中数据的保存 二.实验类型 综合型

三.实验内容:

用GUI创建界面,制作一简单图像处理系统,通过界面中的工具完成功能: 1. 基本原理是将多幅的图象叠加求平均达到去除噪声的目的。 2. 打开并显示任意路径的图像文件(uigetfile,imread)。

3. 通过add noise按钮在导入图像中加入方差为0.1高斯噪声,(imnoise,randn)。 4. 利用可编辑文本框输入要叠加平均的加噪图象的幅数。

27

5. 通过denoise按钮执行平均去噪。注意随着图象幅数的增加,观察去噪的效果。 6. 显示去噪前后的图像和差图象

28

function varargout = untitled1(varargin) % UNTITLED1 M-file for untitled1.fig

% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing % singleton*. %

% H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to % the existing singleton*. %

% UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in UNTITLED1.M with the given input arguments. %

% UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before untitled1_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application % stop. All inputs are passed to untitled1_OpeningFcn via varargin. %

% *See GUI Options on GUIDE's Tools menu. Choose \ % instance to run (singleton)\ %

% See also: GUIDE, GUIDATA, GUIHANDLES

29

% Edit the above text to modify the response to help untitled1

% Last Modified by GUIDE v2.5 27-Aug-2014 10:34:21

% Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @untitled1_OpeningFcn, ... 'gui_OutputFcn', @untitled1_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% --- Executes just before untitled1 is made visible.

function untitled1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to untitled1 (see VARARGIN)

% Choose default command line output for untitled1 handles.output = hObject;

% Update handles structure guidata(hObject, handles); clear all

% UIWAIT makes untitled1 wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

30

function varargout = untitled1_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global B

H={'*.jpg';'*.bmp';'*.gif';'*.tif';'*.tga'};

[filename,pathname]=uigetfile(H,'请选择需要打开的图像'); file=strcat(pathname,filename);

[X,map]=imread(filename); % str=(pathname,filename);I= B=X;

I=imread(file);

axes(handles.axes1);

imshow(I),title('原图像');

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global B global J

J=imnoise(B,'gaussian',0,0.1); axes(handles.axes2);

imshow(J),title('加噪声后图像');

% --- Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global B global Q global K

31

global J

K=zeros(size(B)); for i=1:Q;

J=imnoise(B,'gaussian',0.002); J1=im2double(J); K=K+J1; end K=K/Q;

axes(handles.axes3); imshow(K);

title('消噪声后图像');

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global K global J

J1=im2double(J);

XX=abs(imsubtract(J1,K)); axes(handles.axes4); image(XX);

title('去噪前后的差图象');

function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text

% str2double(get(hObject,'String')) returns contents of edit1 as a double global Q

Q=str2double(get(handles.edit1,'string'));

% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

32

% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

四.实验步骤:

1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。

2.首先建立图形界面,添加各类组件,并设置相关组件的TAG值

3进行界面设计,需要对界面空间的布局、控件的大小等进行设计,最好的方法就是在一张纸上简要地绘制一下界面的外观,做到心中有数。

1)在MATLAB中启动GUIDE的方法是在MATLAB命令行中键入指令:

>>guide

或者通过“Start”菜单选择“MATLAB”下的“GUIDE”命令。

图6-1 启动GUI

选择空白界面类型,并单击“OK”按钮,这时MATLAB将启动GUIDE的图形界面,如图6-2所示。

33

图6-2 具有空白界面的GUIDE图形界面

在GUIDE界面中,位于中央的深灰色部分为绘制控件的画布,用户可以调整画布的尺寸以得到不同的界面尺寸。

2)创建GUIDE的过程之一,就是从控件面板中选择需要的控件,然后用鼠标在画布上绘制合适大小的控件。

3)设置控件的属性,这一步骤重点需要设置控件重要的属性值,例如控件的回调函数、标签和显示的文本等。在所有的属性中,比较重要的是控件的String属性和Tag属性, String为显示在控件上的文本, Tag相当于为控件取个名字,这个名字为控件在应用程序中的ID,控件的句柄和相应的回调函数都与这个名字有直接的关系。设置控件的属性可以使用GUIDE的属性察看器和控件浏览器完成。

4)最后一步,就是针对不同的控件需要完成的功能进行M语言编程。通过编写控件的回调函数来实现不同控件的界面功能了。 在单击要编辑按钮之后, 首先需要在回调函数中获取发生对象句柄,一般这一步骤都是由MATLAB背后的工作机制来完成的,然后设置相应对象的属性——在坐标轴上绘制相应的曲线或者图形对象,这一步骤需要用户编写具体的代码来实现。

一般地,回调函数的声明为

function object_Callback(hObject , eventData , handles) 其中:

* object为发生事件的控件的Tag属性字符串。 * hObject为发生事件的控件的句柄。

34

* eventData为保留字段,目前版本的MATLAB还暂时不使用。

* handles为一个结构,这个结构中包含所有界面上控件的Tag属性值,还可以添加

用户自己的数据

5)整个图形界面元素就基本上创建完毕了,这时可以单击GUIDE工具栏中的Run按钮,激活图形界面

35

实验七 SIMULINK仿真实验与应用

一、实验目的

1.熟悉Simulink的操作环境并掌握绘制系统模型的方法。 2.掌握Simulink中子系统模块的建立与封装技术。

3.对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。 二、实验设备及条件

计算机一台(带有MATLAB6.0以上的软件环境)。 三、实验内容

实现一个二进制通信仿真系统,要求:

(1) (2) (3) (4) (5) (6) (7)

随机产生二元序列(60个样值);

对二元序列进行信源编码(如:采用算术编码arithenco); 再进行信道编码(如:采用(7,4)循环码,encode); 将编码通过高斯白噪声信道; 信道解码;(decode) 信源解码;(arithdeco)

输出结果,与(1)对比,计算误码率

36

实验七 SIMULINK仿真实验与应用

一、实验目的

1.熟悉Simulink的操作环境并掌握绘制系统模型的方法。 2.掌握Simulink中子系统模块的建立与封装技术。

3.对简单系统所给出的数学模型能转化为系统仿真模型并进行仿真分析。 二、实验设备及条件

计算机一台(带有MATLAB6.0以上的软件环境)。 三、实验内容

实现一个二进制通信仿真系统,要求:

(1) (2) (3) (4) (5) (6) (7)

随机产生二元序列(60个样值);

对二元序列进行信源编码(如:采用算术编码arithenco); 再进行信道编码(如:采用(7,4)循环码,encode); 将编码通过高斯白噪声信道; 信道解码;(decode) 信源解码;(arithdeco)

输出结果,与(1)对比,计算误码率

36

本文来源:https://www.bwwdw.com/article/b7tp.html

Top