文档库 最新最全的文档下载
当前位置:文档库 › MATLAB课设报告

MATLAB课设报告

MATLAB课设报告
MATLAB课设报告

目录

第一章绪论 (3)

第二章程序设计实现思路及步骤 (4)

第三章程序运行结果 (7)

第四章程序设计心得 (12)

第五章附录 (14)

第一章绪论

MATLAB提供了一个信号处理工具(Signl Processing Toolbox),它基于MA TLAB树枝计算环境,提供了数字信号处理的各种操作,其内容涉及了从波形产生到滤波器设计和参量建模以及信号谱分析的范围,核心领域为滤波器设计和频谱分析。工具箱除去提供了用于信号处理的命令函数外,还提供了一组基于CPU开发的借口工具。

数字信号处理的基本内容分为两部分:

(1)、离散时间信号与系统分析

这部分主要涉及的内容是,离散时间信号与系统的时域、频域表示,以及信号通过系统的时域、频域分析及其变换域分析。MA TLAB数据库中提供了与之相对应的函数,一些主要的函数如下所列:

Filter 提供对数字序列进行滤波的功能;

Conv 实现一维信号之间的卷积运算;

Convmtx 构造系统或信号的卷积矩阵;

Fft、ifft 利用快速傅立叶算法计算序列的离散傅叶变换和反变换;

Freqz 基于FFT算法计算数字滤波器的频率响应;

Impz 求解数字滤波器的单位冲击响应;

Zplane 系统函数的零点分析;

(2)、数字滤波器设计和频谱分析

数字滤波器设计和频谱分析是数字信号处理的两个主要应用。数字滤波器设计包括了无限冲击响应(IIR)和有限冲击响应(FIR)滤波器设计,在这一方面,MA TLAB的这一工具库提供了极为丰富的设计工具。频谱分析又可进一步分为线性频谱分析和非线性频谱分析。其中,线性频谱分析的理论基础为傅立叶变换,因此所使用的MATLAB函数主要为fft,ifft,此外,工具箱中还给出了各种窗函数。对于非线性频谱分析,MA TLAB也提供了多种成熟算法的相应函数。

第二章程序设计实现思路及步骤

一、程序设计要求

1.设计的程序要关于MATLAB在某课程中的应用,如信号与系统、电路、高等数学等。2.在大体完成程序的主体设计后,须进行程序界面的设计,在设计的界面实现程序的绘图、动画等功能,即将MATLAB 程序设计与GUI相结合。

二、程序设计基本思路

根据上述要求,本人立足设计MA TLAB在信号处理方面的应用,具体是信号的滤波操作。首先,将程序分成带通滤波部分,低通滤波部分和高通滤波部分三部分进行模块化设计,这样设计有利于编程过程中对程序的调试,更主要的是方便最后界面设计过程中对各个对话框的控件,如:按钮(Push Button)等与程序相应部分的进行对接。特别是控件的Callback 属性设置;然后,分模块进行检查以保证各部分的代码运行正常;最后是在MATLAB提供的图形用户界面(GUI)开发环境下,将程序串接在同一界面上,完成程序的界面设计。

三、程序组织结构图

四、程序实现步骤:

1.程序各部分代码

连续信号频域波形设计

t=(1:100)/1000;

s=sin(2*pi*t*50)+sin(2*pi*t*(50+100))+sin(2*pi*t*(50+200));

S=fft(s,512);w=(0:255)/256*500;

plot(w,abs([S(1:256)]),'y');

xlabel('Hz');ylabel('频率响应幅度');

grid;

title('连续信号频域波形');

带通滤波器部分

n=8;wn=[100 200]/500;

[b,a]=butter(n,wn);

[H,w]=freqz(b,a,512,1000);

plot(w*1000/(2*pi),abs(H),'b-');

xlabel('Hz');ylabel('频率响应幅度');

title('带通滤波器');grid;

高通滤波部分

[b,a]=butter(8,100/500);

[H,w]=freqz(b,a,512,1000);

plot(w*1000/(2*pi),abs(H),'r*');

xlabel('Hz');ylabel('频率响应幅度');

title('高通滤波器');grid;

低通滤波部分

[b,a]=butter(8,200/500,'high');

[H,w]=freqz(b,a,512,1000);

plot(w*1000/(2*pi),abs(H),'k-');

xlabel('Hz');ylabel('频率响应幅度');

title('低通滤波器');grid;

2.程序界面设计部分

“文件”菜单项下“打开”的子菜单项功能的实现部分

[filename, pathname] = uigetfile({'*.doc';'*.ppt';'*.xls';'*.*'},'选择打开的文件');

file=fullfile(pathname,filename);

open(file)程序运行结果

“文件”菜单项下“另存为”的子菜单项功能的实现部分

p = rand(1,10);

q = ones(10);

[fn,pn,fid]=uiputfile({'*.mat','Matlab Date(*.mat)'},'Save as','*.mat');

fn=[pn,fn];

if fid~=0

save(fn,'p','q')

end

退出系统开关控制部分

answer=questdlg('你真的要推出系统吗? ');

if answer=='Yes';

close

end

点击“帮助”菜单下的子菜单项“版本信息”弹出对话框部分设计

questdlg('此为09年系统第一版,版权归07通信一班黄朕同学所有','版本信息','确定','default')

点击“帮助”菜单下的子菜单项“系统自述”弹出Word形式的自述文件部分设计open('系统自述.doc');

第三章程序运行结果

1.程序运行的初始界面

2.点击菜单项“文件”下的子菜单项“打开”后,程序的界面

3.点击菜单项“文件”下的子菜单项“另存为”后,程序的界面

4、点击菜单项“退出”后的界面

5、点击菜单项“帮助”下的子菜单项“版本信息”后,程序的界面

6.点击按钮“输入连续信号”后的程序界面

7.右键波形线条的某一点,在随后出现的对话框中选择“颜色”为红后,程序的运行界面(其它选项的效果在这里就不作详细介绍了,待大家去尝试)

8、点击按钮“带通滤波器”后的程序界面

9. 点击按钮“高通滤波器”后的程序界面

10.点击按钮“低通滤波器”后的程序界面

第四章程设计心得

一、知识心得

1.通过这次MATLAB大作业是对MATLAB很好的一次复习。许多知识点比如,MATLAB中

函数的定义,MATLAB中绘图等在这次大作业都得到了很好的复习。

2.通过MATLAB的这次大作业,还掌握了一些以前重未接触过的MATLAB的知识,例如,

MATLAB中几个常见的对话框(问题提示对话框questdlg、信息提示对话框msgbox 等),MATLAB中文件的打开Word文档,ppt文件的操作。下面就具体介绍一下MATLAB 中打开Word文档,ppt文件这些文件操作:

其实,要实现上述功能有两种方法。

方法一、

通过uigetfile命令获取文件路径,然后使用open函数使用以windows默认的方式打开对应的应用程序,比如doc默认以word打开

[filename,pathname]=uigetfile({'*.doc';'*.ppt';'*.xls';'*.*'}, 'File Selector');

file=fullfile(pathname,filename);

open(file)

这个方法好处是可以在MATLAB中打开任意路径下的文件。

方法二、

直接使用open函数以windows默认的方式打开文档

即open(“文件名”)

这个方法有其明显的缺陷,那就是只能在MATLAB程序运行的路径下才能打开所指定的文件

二、体会

(1)、这是我自己独立完成的设计。虽然各个波形的设计都参考了网络上的已有的相关范本,但总体来说是自己完成的。

(2)、对滤波的效果,我也还感觉满意。在我设计的三中滤波器中,高通、低通和带通分别对应不同的频段,滤波的结果都与之相吻合。

我认为这次设计也存在不足之处:

(1)、不能改变信号的频率。无论是输入信号还是输出信号,或者是滤波器,频率都是固定的,没有设置频率更改按钮。

(2)、虽然实现了菜单项中的“另存为”的子菜单项的功能,但实际效果不好,仍不能很好保存系统运行产生的数据。

(3)、在实现程序改变图形线条的颜色,粗细和虚实的功能时所采用的方法过于繁琐。

第五章附录

function varargout = an1(varargin)

%AN1 M-file for an1.fig

% AN1, by itself, creates a new AN1 or raises the existing

% singleton*.

%

% H = AN1 returns the handle to a new AN1 or the handle to

% the existing singleton*.

%

% AN1('Property','Value',...) creates a new AN1 using the

% given property value pairs. Unrecognized properties are passed via

% varargin to an1_OpeningFcn. This calling syntax produces a

% warning when there is an existing singleton*.

%

% AN1('CALLBACK') and AN1('CALLBACK',hObject,...) call the

% local function named CALLBACK in AN1.M with the given input

% arguments.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

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

% Last Modified by GUIDE v2.5 22-Jun-2009 00:59:25

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

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

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @an1_OpeningFcn, ...

'gui_OutputFcn', @an1_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 an1 is made visible.

function an1_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 unrecognized PropertyName/PropertyValue pairs from the % command line (see VARARGIN)

% Choose default command line output for an1

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes an1 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = an1_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

n=8;wn=[100 200]/500;

[b,a]=butter(n,wn);

[H,w]=freqz(b,a,512,1000);

% --- 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)

n=8;wn=[100 200]/500;

[b,a]=butter(n,wn);

[H,w]=freqz(b,a,512,1000);

x1=w*1000/(2*pi);

y1=abs((H));

hl=plot(x1,y1);

xlabel('Hz');ylabel('频率响应幅度');

title('带通滤波器');grid;

hc=uicontextmenu;%建立快捷菜单

hls=uimenu(hc,'Label','线型');%建立菜单项

hlw=uimenu(hc,'Label','线宽');

cm=uimenu(hc,'Label','颜色');

uimenu(hls,'Label','虚线

','callback','set(hl,''LineStyle'','':''),');

uimenu(hls,'Label','实线

','callback','set(hl,''LineStyle'',''-''),');

uimenu(hlw,'Label','加宽','callback','set(hl,''LineWidth'',3),'); uimenu(hlw,'Label','变细

','callback','set(hl,''LineWidth'',0.4),');

uimenu(cm, 'label', '红', 'callback', 'set(hl,''color'',''r''),'); uimenu(cm, 'label', '蓝', 'callback', 'set(hl,''color'',''b''),'); uimenu(cm, 'label', '绿', 'callback', 'set(hl,''color'',''g''),'); uimenu(cm, 'label', '黑', 'callback', 'set(hl,''color'',''k''),'); set(hl,'uicontextmenu',hc);

% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [b,a]=butter(8,100/500);

[H,w]=freqz(b,a,512,1000);

x2=w*1000/(2*pi);

y2=abs(H);

hla=plot(x2,y2,'r');

xlabel('Hz');ylabel('频率响应幅度');

title('高通滤波器');grid;

hc=uicontextmenu;%建立快捷菜单

hls=uimenu(hc,'Label','线型');%建立菜单项

hlw=uimenu(hc,'Label','线宽');

cm=uimenu(hc,'Label','颜色');

uimenu(hls,'Label','虚线

','callback','set(hla,''LineStyle'','':''),');

uimenu(hls,'Label','实线

','callback','set(hla,''LineStyle'',''-''),');

uimenu(hlw,'Label','加宽','callback','set(hla,''LineWidth'',3),'); uimenu(hlw,'Label','变细

','callback','set(hla,''LineWidth'',0.4),');

uimenu(cm, 'label' , '红' , 'callback' ,

'set(hla,''color'',''r''),' );

uimenu(cm, 'label' , '蓝' , 'callback' ,

'set(hla,''color'',''b''),' );

uimenu(cm, 'label' , '绿' , 'callback' ,

'set(hla,''color'',''g''),' );

uimenu(cm, 'label' , '黑' , 'callback' ,

'set(hla,''color'',''k''),' );

set(hla,'uicontextmenu',hc);

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [b,a]=butter(8,200/500,'high');

[H,w]=freqz(b,a,512,1000);

x3=w*1000/(2*pi);

y3=abs(H);

hlb=plot(x3,y3,'k-');

xlabel('Hz');ylabel('频率响应幅度');

title('低通滤波器');grid;

hc=uicontextmenu;%建立快捷菜单

hls=uimenu(hc,'Label','线型');%建立菜单项

hlw=uimenu(hc,'Label','线宽');

cm=uimenu(hc,'Label','颜色');

uimenu(hls,'Label','虚线

','callback','set(hlb,''LineStyle'','':''),');

uimenu(hls,'Label','实线

','callback','set(hlb,''LineStyle'',''-''),');

uimenu(hlw,'Label','加宽','callback','set(hlb,''LineWidth'',3),'); uimenu(hlw,'Label','变细

','callback','set(hlb,''LineWidth'',0.4),');

uimenu(cm, 'label' , '红' , 'callback' ,

'set(hlb,''color'',''r''),' );

uimenu(cm, 'label' , '蓝' , 'callback' ,

'set(hlb,''color'',''b''),' );

uimenu(cm, 'label' , '绿' , 'callback' ,

'set(hlb,''color'',''g''),' );

uimenu(cm, 'label' , '黑' , 'callback' ,

'set(hlb,''color'',''k''),' );

set(hlb,'uicontextmenu',hc);

%

-----------------------------------------------------------------function OpenMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to OpenMenuItem (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [filename, pathname] = uigetfile({'*.doc';'*.ppt';'*.xls';'*.*'},'选择打开的文件');

file=fullfile(pathname,filename);

open(file)

%

-----------------------------------------------------------------function PrintMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to PrintMenuItem (see GCBO)

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

%

-----------------------------------------------------------------function CloseMenuItem_Callback(hObject, eventdata, handles)

% hObject handle to CloseMenuItem (see GCBO)

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

%

-----------------------------------------------------------------function FileMenu_Callback(hObject, eventdata, handles)

% hObject handle to FileMenu (see GCBO)

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

% --- If Enable == 'on', executes on mouse press in 5 pixel border. % --- Otherwise, executes on mouse press in 5 pixel border or over pushbutton6.

function pushbutton6_ButtonDownFcn(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

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

%

-----------------------------------------------------------------function Untitled_1_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_1 (see GCBO)

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

%

-----------------------------------------------------------------function Untitled_2_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) answer=questdlg('你真的要推出系统吗? ');

if answer=='Yes';

close

end;

%

-----------------------------------------------------------------function Untitled_3_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_3 (see GCBO)

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

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton7 (see GCBO)

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

t=(1:100)/1000;

s=sin(2*pi*t*50)+sin(2*pi*t*(50+100))+sin(2*pi*t*(50+200));

S=fft(s,512);

y4=abs([S(1:256)]);

x4=(0:255)/256*500;

hlc=plot(x4,y4,'y');

xlabel('Hz');ylabel('频率响应幅度');

title('连续信号频域波形');grid;

hc=uicontextmenu;%建立快捷菜单

hls=uimenu(hc,'Label','线型');%建立菜单项

hlw=uimenu(hc,'Label','线宽');

cm=uimenu(hc,'Label','颜色');

% 制作具体菜单项,定义相应的回调

uimenu(hls,'Label','虚线

','callback','set(hlc,''LineStyle'','':''),');

uimenu(hls,'Label','实线

','callback','set(hlc,''LineStyle'',''-''),');

uimenu(hlw,'Label','加宽','callback','set(hlc,''LineWidth'',3),'); uimenu(hlw,'Label','变细

','callback','set(hlc,''LineWidth'',0.4),');

uimenu(cm, 'label' , '红' , 'callback' ,

'set(hlc,''color'',''r''),' );

uimenu(cm, 'label' , '蓝' , 'callback' ,

'set(hlc,''color'',''b''),' );

uimenu(cm, 'label' , '绿' , 'callback' ,

'set(hlc,''color'',''g''),' );

uimenu(cm, 'label' , '黑' , 'callback' ,

'set(hlc,''color'',''k''),' );

set(hlc,'uicontextmenu',hc);%将该快捷菜单和曲线对象联系起来

%

-----------------------------------------------------------------function Untitled_4_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) questdlg('此为09年系统第一版,版权归07通信一班黄朕同学所有','版本信息','确定','default')

%

-----------------------------------------------------------------function Untitled_5_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) open('系统自述.doc');

%

-----------------------------------------------------------------function Untitled_6_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_6 (see GCBO)

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

%

-----------------------------------------------------------------function Untitled_7_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_7 (see GCBO)

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

% --- Executes on button press in checkbox1.

function checkbox1_Callback(hObject, eventdata, handles)

% hObject handle to checkbox1 (see GCBO)

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

% Hint: get(hObject,'Value') returns toggle state of checkbox1

% --- Executes on slider movement.

function slider1_Callback(hObject, eventdata, handles)

% hObject handle to slider1 (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,'Value') returns position of slider

% get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% --- Executes during object creation, after setting all properties. function slider1_CreateFcn(hObject, eventdata, handles)

% hObject handle to slider1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9 .9 .9]);

end

% --- Executes on selection change in listbox2.

function listbox2_Callback(hObject, eventdata, handles)

% hObject handle to listbox2 (see GCBO)

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

% Hints: contents = get(hObject,'String') returns listbox2 contents as cell array

% contents{get(hObject,'Value')} returns selected item from listbox2

% --- Executes during object creation, after setting all properties. function listbox2_CreateFcn(hObject, eventdata, handles)

% hObject handle to listbox2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

相关文档