首页 Matlab实时信号采集与处理开发

Matlab实时信号采集与处理开发

举报
开通vip

Matlab实时信号采集与处理开发nullnull北京理工大学交通工程系 姚国仲 MATLAB数据采集和处理软件开发学习目标学习目标了解Matlab语言的开发环境及开发方法 掌握Matlab语言的基本操作 学习数据采集和数据处理的编程思路 掌握Matlab的数据采集和处理软件的开发方法MATLAB的功能MATLAB的功能用于算法开发、数据可视化、数据分析以及数值计算 Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等...

Matlab实时信号采集与处理开发
nullnull北京理工大学交通 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 系 姚国仲 MATLAB数据采集和处理软件开发学习目标学习目标了解Matlab语言的开发环境及开发方法 掌握Matlab语言的基本操作 学习数据采集和数据处理的编程思路 掌握Matlab的数据采集和处理软件的开发方法MATLAB的功能MATLAB的功能用于算法开发、数据可视化、数据分析以及数值计算 Matlab可以进行矩阵运算、绘制 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 、金融建模设计与分析等领域。认识一下MATLAB认识一下MATLABMATLAB的GUI编程MATLAB的GUI编程GUI 简介 通过向导创建 GUI 界面 编写 GUI 代码 通过程序创建 GUI GUI简介GUI简介MATLAB 中的 GUI 程序为事件驱动的程序。事件包括按下按钮,鼠标单击等。GUI 中的每个控件与用户定义的语句相关。当在界面上执行某项操作时,则开始执行相关的语句。 MATLAB 提供了两种创建图形用户接口的方法:通过 GUI 向导创建的方法和编程创建 GUI 的方法。GUI控件GUI控件Push Button:按钮 Toggle Button:开关按钮 Radio Button:单选按钮 Check Box:复选框 Edit Text:文本编辑框 Panel:面板nullSlider:滑动条 List Box:列表框 Pop-Up Menu:弹出式菜单 Axes:坐标系 Button Group:按钮组GUI界面GUI界面GUI界面GUI界面GUI控件功能简介GUI控件功能简介Push Button:按钮,当按钮按下时则产生操作,如按下 OK 按钮时进行相应操作并关闭对话框。 Toggle Button:开关按钮,该按钮包含两个状态,第一次按下按钮时按钮状态为“开”,再次按下时将其状态改变为“关”。状态为“开”时进行相应的操作。 Radio Button:单选按钮,用于在一组选项中选择一个并且每次只能选择一个。用鼠标点击选项即可选中相应的选项,选择新的选项时原来的选项自动取消。GUI控件功能简介GUI控件功能简介Check Box:复选框,用于同时选中多个选项。当需要向用户提供多个互相独立的选项时,可以使用复选框。 Edit Text:文本编辑框,用户可以在其中输入或修改文本字符串。程序以文本输入时使用该工具。 Static Text:静态文本。静态文本控制文本行的显示,用于向用户显示程序使用说明、显示滑动条的相关数据等。用户不能修改静态文本的内容。GUI控件功能简介GUI控件功能简介Slider:滑动条,通过滑动条的方式指定参数。指定数据的方式可以拖动滑动条、点击滑动槽的空白处,或者点击按钮。滑动条的位置显示的为指定数据范围的百分比。 List Box:列表框,列表框显示选项列表,用户可以选择一个或多个。 Pop-Up Menu:弹出式菜单,当用户点击箭头时弹出选项列表。 Axes:坐标系,用于在 GUI 中添加图形或图像。GUI控件功能简介GUI控件功能简介Panel:面板,用于将 GUI 中的控件分组管理和显示。使用面板将相关控件分组显示可以使软件更易于理解。面板可以包含各种控件,包括按钮、坐标系及其他面板等。面板包含标题和边框等用户显示面板的属性和边界。面板中的控件与面板之间的位置为相对位置,当移动面板时,这些控件在面板中的位置不改变。GUI控件功能简介GUI控件功能简介Button Group:按钮组,按钮组类似于面板,但是按钮组的控件只包括单选按钮或者开关按钮。按钮中的所有控件,其控制代码必须写在按钮组的 SelectionChangeFcn 响应函数中,而不是用户接口控制响应函数中。按钮组会忽略其中控件的原有属性。 ActiveX Component:ActiveX 控件,用于在 GUI 中显示控件,该功能只有在 Windows 操作系统下可用。创建GUI应用程序创建GUI应用程序创建一个 GUI,实现三维图形绘制。 界面中应包含一个绘图区域; 一个面板,其中包含三个绘图按钮,分别实现表面图、网格图和等值线的绘制; 一个弹出菜单,用以选择数据类型,并且用静态文本进行说明。其草图如图所示。创建GUI应用程序创建GUI应用程序点击工具栏中的 GUIDE 图标,启动 GUIDE,系统打开界面如图所示。 选择新建 GUI 标签,并选择新建空的 GUI,选中下面的保存选项,输入文件名,得到结果如图所示。 该窗口中包括菜单栏、控制工具栏、GUI 控件面板、GUI 编辑区域等,在 GUI 编辑区域右下脚,可以通过鼠标拖曳的方式改变 GUI 界面的大小。创建GUI应用程序创建GUI应用程序向界面中添加按钮。创建GUI应用程序创建GUI应用程序属性编辑器创建GUI应用程序创建GUI应用程序编写数据生成函数 M-file Editor GUIPlot_OpeningFcn 函数创建GUI应用程序创建GUI应用程序该函数中已有部分内容,现在其中添加数据生成函数。添加后该函数的内容为: % --- Executes just before GUIPlot is made visible. function GUIPlot_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 GUIPlot (see VARARGIN) % Create the data to plot. handles.peaks=peaks(35); handles.membrane=membrane; [x,y] = meshgrid(-8:.5:8);创建GUI应用程序创建GUI应用程序r = sqrt(x.^2+y.^2) + eps; sinc = sin(r)./r; handles.sinc = sinc; % Set the current data value. handles.current_data = handles.peaks; contour(handles.current_data) % Choose default command line output for GUIPlot handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes GUIPlot wait for user response (see UIRESUME) % uiwait(handles.figure1); 该函数首先生成三组数据,并设置初始数据为 peaks 数据,且初始图形为等值线。修改该函数后再次运行 GUI,得到结果如图 。创建GUI应用程序创建GUI应用程序在 GUI 编辑器中右键点击相应控件,选择 View Callbacks 中的 Callback,系统自动打开 M 文件编辑器,并且光标位于相应的函数处 其他控件的Callback。创建GUI应用程序创建GUI应用程序弹出菜单的响应函数: % --- Executes on selection change in data_pop_up. function data_pop_up_Callback(hObject, eventdata, handles) % hObject handle to data_pop_up (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Determine the selected data set. str = get(hObject, 'String'); val = get(hObject,'Value'); % Set current data to the selected data set. switch str{val};创建GUI应用程序创建GUI应用程序case 'Peaks' % User selects peaks handles.current_data = handles.peaks; case 'Membrane' % User selects membrane handles.current_data = handles.membrane; case 'Sinc' % User selects sinc handles.current_data = handles.sinc; end % Save the handles structure. guidata(hObject,handles) % Hints: contents = get(hObject,'String') returns data_pop_up contents as cell array % contents{get(hObject,'Value')} returns selected item from data_pop_up 该函数首先取得弹出菜单的 String 属性和 Value 属性,后通过分支语句选择数据。创建GUI应用程序创建GUI应用程序三个按钮的响应函数分别为: function btnSurf_Callback(hObject, eventdata, handles) surf(handles.current_data); function btnMesh_Callback(hObject, eventdata, handles) mesh(handles.current_data);创建GUI应用程序创建GUI应用程序function btnContour_Callback(hObject, eventdata, handles) contour(handles.current_data); 创建GUI应用程序创建GUI应用程序GUI代码说明GUI代码说明在创建 GUI 界面后,需要为界面中的控件编写响应函数,这些函数决定当事件发生时的具体操作。 通常情况下, GUI 包含两个文件: FIG 文件和 M 文件。 FIG 文件的扩展名为 .fig,是一种 MATLAB 文件,其中包含 GUI 的布局及其中包含的所有控件的相关信息。FIG 文件为二进制文件,只能通过 GUI 向导进行修改。GUI代码说明GUI代码说明M 文件扩展名为 .m,其中包含 GUI 的初始代码及相关响应函数的模板。用户需要在该文件中添加响应函数的具体内容。 M 文件通常包含一个与文件同名的主函数,各个控件对应的响应函数,这些响应函数为主函数的子函数。其内容如表所示。 GUI代码说明GUI代码说明GUI代码说明GUI代码说明一个 GUI 中包含多个控件,GUIDE 中提供了一种方法,用于指定每个控件所对应的响应函数。 GUIDE 通过每个控件的响应属性将控件与对应的响应函数相关联。在默认情况下,GUIDE 将每个控件的最常用的响应属性设置为 %automatic,如图 所示。如每个按钮有五个响应属性,ButtonDownFcn、Callback、CreateFcn、DeleteFcn 和 KeyPressFcn,GUIDE 将其 Callback 属性设置为 %automatic。用户可以通过属性编辑器将其他响应属性设置为 %automatic。 GUI代码说明GUI代码说明当再次保存 GUI 时,GUIDE 将 %automatic 替换为响应函数的名称,该函数的名称由该控件 Tag 属性及响应函数的名称组成,如图所示。 其中 two_axes 是该 GUI 的名称,同时是该 GUI 主调函数的名称。其他参数为 plotpushbutton_Callback 函数的输入参数,其意义分别为: gcbo:用于返回响应对象的句柄; [ ]:用于存放事件数据; guidata(gcbo):返回该 GUI 的句柄结构体。GUI代码说明GUI代码说明响应函数的语法与参数 MATLAB 中对响应函数的语法和参数有一些约定,在 GUI 向导创建响应函数并写入 M 文件时便遵守这些约定。如下面为按钮的响应函数模板: % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) %#ok % 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) 用户可以在这里输入函数的其他内容说明该函数的触发事件函数定义行对输入参数进行说明GUI代码说明GUI代码说明初始化响应函数 GUI 的初始化函数包括 Opening 函数和Output 函数。 在每个 GUI M 文件中 opening 函数是第一个调用的函数。该函数在所有控件创建完成后,GUI 显示之前运行。用户可以通过 opening 函数设置程序的初始任务,如创建数据、读入数据等。 通常 opening 函数的名称为“M 文件名+_ OpeningFcn”,如下面的初始模板:GUI代码说明GUI代码说明% --- Executes just before mygui is made visible. function mygui_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 mygui (see VARARGIN) % Choose default command line output for mygui handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes mygui wait for user response (see UIRESUME) % uiwait(handles.mygui);GUI代码说明GUI代码说明其中文件名为 mygui,函数名为 mygui_OpeningFcn。该函数包含四个参数,第四个参数 varargin 允许用户通过命令行向 opening 函数传递参数。opening 函数将这些参数添加到结构体 handles 中,供响应函数调用。 该函数中包含三行语句,如下。 handles.output = hObject ,向结构体 handles 中添加新元素 output,并将其值赋为输入参数 hObject,即 GUI 的句柄。该句柄供 output 函数调用。 guidata(hObject,handles),保存handles。用户必须通过 guidata 保存结构体 handles 的任何改变。 uiwait(handles.mygui),在初始情况下,该语句并不执行。该语句用于中断 GUI 执行等待用户反应或 GUI 被删除。如果需要该语句运行,删除前面的“%”即可。GUI代码说明GUI代码说明output 函数用于向命令行返回 GUI 运行过程中产生的输出结果。该函数在 opening 函数返回控制权和控制权返回至命令行之间运行。因此,输出参数必须在 opening 函数中生成,或者在 opening 函数中调用 uiwait 函数中断 output 的执行,等待其他响应函数生成输出参数。数据采集软件开发数据采集软件开发数据采集简介 数据采集软件开发 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 数据采集软件例程null数据采集简介 数据采集软件开发流程 数据采集软件例程数据采集软件开发数据采集软件开发数据采集器 RBH8305数据采集软件开发数据采集软件开发程序主要文件数据采集软件开发数据采集软件开发程序主要文件 第一类:北京瑞博华公司提供的接口程序: ADCARD.H:这是瑞博华公司专为Matlab提供的头文件,通过该文件,就可以实现对瑞博华公司提供的函数库进行操作。 第二类:设计文件: r8271.fig:用户界面文件,实现主要功能 r8271.m:应用软件源程序,实现主要功能 r8271.asv:程序运行时的文件 第三类:说明文件: 说明.txt:该文件 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 软件的基本情况 数据采集软件开发数据采集软件开发软件开发流程 开发本软件的关键是在程序中调用瑞博华公司提供的DLL文件,然后就可以如同正常的Matlab软件的开发。在matlab中利用动态链接库接口技术通常需要完成以下4个步骤: 1、打开动态链接库文件。 2、为调用函数准备数据。 3、调用动态链接库文件中导出的函数。 4、关闭动态链接库文件。数据采集软件开发数据采集软件开发打开动态链接库函数: Loadlibrary(‘mydll’, ‘hfile’); 其中mydll是字符串变量,代表所要使用的DLL文件的名称。hfile也是字符串变量,代表包含该DLL文件中所导出的函数定义的头文件名。hfile包含以C语言定义的函数特征,对于本来就是以C/C++开发的DLL文件,可以直接使用原来的头文件。对于其他语言开发的DLL文件,需要手工编写相应的C语言头文件。 数据采集软件开发数据采集软件开发调用动态链接库文件中导出的函数: Calllib(’libname’, ‘funcname’, arg1, arg2,…..argN) 其中libname是字符串变量,表示载入的DLL文件,它通常是载入的DLL文件名;funcname也是字符串变量,代表需要调用的函数名;arg1,arg2….argN则是调用函数funcname所需要的所有参数。数据采集软件开发数据采集软件开发动态链接库文件的卸载: Unloadlibrary(’libname’); 其中libname为字符串变量,表示要卸载的DLL文件。数据采集软件开发数据采集软件开发Adcard动态链接库中所包含的函数名称、返回值类型以及参数类型数据采集软件开发数据采集软件开发实例说明数据采集软件开发数据采集软件开发实例说明 红色区域同时显示各个通道的电压值,本例程以4个通道为例。 绿色区域显示当前采集的数据块数。该数据不应该达到用户软件设定的内存缓冲区数,如果达到了用户设定的缓冲区数,表明可能产生数据丢失,解决的方法是增加内存缓冲区块数NumBuf这个变量的值,或增大NumSamp这个参数。数据采集软件开发数据采集软件开发实例说明 黄色区域表示保存数据功能,在用户采集过程中,当选中这个选项时,可以自动将采集到的数据保存在文件当中,文件名以日期时间默认命名,用户可以在保存后自行修改。 五个按钮分别代表开始采集、停止采集、关闭程序、读取保存的数据以及配置信息。该例程的一个功能就是可以保存、读取数据,方便用户记录。数据采集软件开发数据采集软件开发实例说明 波形的曲线显示,将采集到的AD值以波形的方式表现出来,直观而且容易理解。 Matlab具有强大的画图的功能,在示例的开发中利用图形功能可以很形象地表现采集的数值。数据采集软件开发数据采集软件开发实例说明 配置信息对话框,可以在停止采集后打开此对话框对采集程序进行信息配置,主要包括所用采集卡的AD位数,作用采集卡的通道数,在主界面画图的通道号以及采样频率。配置信息对话框数据采集软件开发数据采集软件开发实例说明 数组与变量的定义 global NumBuf global NumSamp global begchn global NumChn global FrqSamp global FrqFilter global AmpGain 其中,NumBuf为缓冲区个数,NumSamp为每个缓冲区采样点数,一个采样点是指所有的通道采样一次,begchn为起始通道,NumChn为通道数,FrqSamp为采样频率,FrqFilter为滤波器频率,AmpGain为放大器增益,本程序借用这个产生控制采集模式,当该参数=0时,表示AD结果为未校准结果,否则为校准结果.正常使用时应该为1。数据采集软件开发数据采集软件开发实例说明 数组与变量的定义 定义数据缓冲区,handles.lp为指向缓冲区数组的指针。 handles.ADBuf=1:6000; shortdata=uint16(handles.ADBuf); handles.lp=libpointer('uint16Ptr',shortdata); 数据采集软件开发数据采集软件开发实例说明 调用adcard.dll h=[' F:\Program Files\MATLAB\R2007b\work\adcard.h']; %头文件所在的地址 loadlibrary('adcard',h); %调用adcard.dll,将dll文件包含到程序中。数据采集软件开发数据采集软件开发实例说明 定义定时器 由于Matlab的gui编程组件中没有现成的定时器空间,所以在使用定时器之前要先定义定时器。 handles.timer=timer('Period',0.2,'ExecutionMode','FixedRate','TimerFcn',{@Msgupdate,handles}); handles.timer1=timer('Period',0.2,'ExecutionMode','FixedRate','TimerFcn',{@Draw,handles}); 这两个定时器一个负责采集数据的读取,第二个负责读取已存数据时的画图。数据采集软件开发数据采集软件开发实例说明 定时器程序 定时器程序是高速连续采集的关键程序。 ChnNum=2;%要画在面板上的通道号 shortdata=1:6000; %定义临时缓冲区 shortdata(1:6000)=0; NumFill=calllib('adcard','QueryBuf'); %填充满的缓冲区数数据采集软件开发数据采集软件开发实例说明 定时器程序 j=calllib('adcard','ADResult',handles.lp); %获得采集数据 shortdata=get(handles.lp,'value'); %将采集数据放入临时数组中 RecordBuf(1:NumSamp*NumChn)=shortdata(1:NumSamp*NumChn); %将采集数据放入大缓冲区数组 RecordPtr=RecordPtr+NumSamp*NumChn; %数据指针 if RecordPtr>=RecordBlock*NumSamp*NumChn RecordPtr=0; end数据采集软件开发数据采集软件开发实例说明 画图 for i=1:NumSamp DrawBuf(i)=RecordBuf(1+NumChn*(i-1)+ChnNum); %ChnNum是要画的通道号 DrawBuf(i)=(DrawBuf(i)-VZero)/VMax*SpainV; if fFlag==1 count=fwrite(fid,DrawBuf(i),'double'); end end % 将数据画在面板上 plot(DrawBuf(901:1000)); axis([0 100 -5 5]); grid on 数据采集软件开发数据采集软件开发实例说明 开始采集的命令 calllib('adcard','StopIntr'); %先停止采集卡 i = calllib('adcard','Initial',0,0,0,0);%初始化采集卡 if i~=1 return; end %开始采集 i=calllib('adcard','StartIntr',NumBuf,NumSamp,begchn,NumChn,FrqSamp,FrqFilter,AmpGain); start(handles.timer); %开启定时器数据采集软件开发数据采集软件开发实例说明 停止采集的命令 set(handles.StopButton,'enable','off'); i=calllib('adcard','StopIntr'); %停止采集卡 if i~=1 return; end stop(handles.timer); %关闭定时器注意事项注意事项 1、采用Matlab编程时,一定要先调用adcard.dll文件,结束程序时,要卸载adcard.dll文件。 2、配置参数NumBuf,NumSamp时,要考虑采样频率FrqSamp,当FrqSamp很大时,NumSamp就应该增大,当FrqSamp很小时,NumSamp就应该变小。NumBuf的要求是每次定时器读取得到的缓冲区数要小于NumBuf,并且还有一定的余量。MATLAB数据处理软件MATLAB数据处理软件1、从数据采集软件将数据写入WorkSpace q=DrawBuf(901:1000); WaveSampNum = DrawBuf(1:1000); d=linspace(0,100/20000,100); e=[d;q]; assignin('base','Signal2Workspace',e); %д2 workspace MATLAB数据处理软件MATLAB数据处理软件2、加噪处理 MATLAB数据处理软件MATLAB数据处理软件3 加噪信号输出到WorkSpaceMATLAB数据处理软件MATLAB数据处理软件MATLAB数据处理软件MATLAB数据处理软件信号情况MATLAB数据处理软件MATLAB数据处理软件4、读取加噪信号、进行处理 function WavePro(obj,events,handles) global WaveSampNum; [c,l]=wavedec(WaveSampNum(1:1000),5,'db2'); x=wrcoef('a',c,l,'db2',1); plot(handles.plot2,x); axis(handles.plot2,[0 200 -5 5]); sim('Signal2Wave'); wavelet(ScopeData(:,2))MATLAB数据处理软件MATLAB数据处理软件function y=wavelet(u) global FlagF; FlagF=0; [c,l]=wavedec(u,5,'db8'); x=wrcoef('a',c,l,'db8',5); if(FlagF==0) figure(1); FlagF=1; end plot(x); axis([0 500 -5 5]);MATLAB数据处理软件MATLAB数据处理软件信号没有加噪的处理null谢谢!
本文档为【Matlab实时信号采集与处理开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_051258
暂无简介~
格式:ppt
大小:4MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2010-12-19
浏览量:27