MATLAB课程设计时钟
MATLAB课程设计时钟

MATLAB课程设计时钟————————————————————————————————作者:————————————————————————————————日期:MATLAB制作时钟摘要:MATLAB是一款强大的、应用广泛的软件,本文主要利用MATLAB的相关编程来设计实现时钟界面显示效果。
关键字:MATLAB、时钟、界面引言MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商业数学软件。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
本文通过MA TLAB编程设计时钟显示界面来体会它功能的强大和应用的广泛。
完整的时钟界面有时针、分针、秒针以及刻度等组成,下面详细介绍实现时钟界面的步骤。
1、设置时钟相关参数,比如界面大小、界面颜色,时钟名称等。
h=figure('menubar','none','color','white',...'position',[200 200 320 360],...'name','北京时间');2、显示刻度这个时钟显示了四个刻度,分别是12、9、6、3,以下语句分别显示了这四个刻度。
(1)定义一个text控件,显示刻度“12”b1=uicontrol('parent',h,'style','text','string','12','fontsize',…12,'position',[156 275 20 20]);(2)定义一个text控件,显示刻度“9”b2=uicontrol('parent',h,'style','text','string','9','fontsize',…12,'position',[60 175 20 20]);(3)定义一个text控件,显示刻度“6”b3=uicontrol('parent',h,'style','text','string','6','fontsize',…12,'position',[156 75 20 20]);(4)定义一个text控件,显示刻度“3”b4=uicontrol('parent',h,'style','text','string','3','fontsize',…12,'position',[260 175 20 20]);3、设置刻度,分别设置分针的刻度和小时的刻度。
matlab课程教学设计(简单计算器的设计)

matlab课程设计报告题目简易计算器的设计学院电子信息工程学院专业电子信息学生姓名和学号指导教师一、选题目的及意义GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。
人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。
本次课程设计是使用了matlab中的guide生成了简单的计算器程序。
二、源代码function varargout = Calculator(varargin)%Simple Calculator%@Anhui University% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @Calculator_OpeningFcn, ...'gui_OutputFcn', @Calculator_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before Calculator is made visible.function Calculator_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 Calculator (see VARARGIN)% Choose default command line output for Calculatorhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes Calculator wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = Calculator_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 structurevarargout{1} = handles.output;% --- Executes on button press in p1.function p1_Callback(hObject, eventdata, handles)% hObject handle to p1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'1');set(handles.text1,'string',textstring)% --- Executes on button press in p2.function p2_Callback(hObject, eventdata, handles)% hObject handle to p2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLABtextstring=get(handles.text1,'string');textstring=strcat(textstring,'2');set(handles.text1,'string',textstring)% --- Executes on button press in p3.function p3_Callback(hObject, eventdata, handles)% hObject handle to p3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'3');set(handles.text1,'string',textstring)% --- Executes on button press in p4.function p4_Callback(hObject, eventdata, handles)% hObject handle to p4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'4');set(handles.text1,'string',textstring)% --- Executes on button press in p5.function p5_Callback(hObject, eventdata, handles)% hObject handle to p5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'5');set(handles.text1,'string',textstring)% --- Executes on button press in p6.function p6_Callback(hObject, eventdata, handles)% hObject handle to p6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'6');set(handles.text1,'string',textstring)% --- Executes on button press in p7.function p7_Callback(hObject, eventdata, handles)% hObject handle to p7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLABtextstring=get(handles.text1,'string');textstring=strcat(textstring,'7');set(handles.text1,'string',textstring)% --- Executes on button press in p8.function p8_Callback(hObject, eventdata, handles)% hObject handle to p8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'8');set(handles.text1,'string',textstring)% --- Executes on button press in p9.function p9_Callback(hObject, eventdata, handles)% hObject handle to p9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'9');set(handles.text1,'string',textstring)% --- Executes on button press in add.function add_Callback(hObject, eventdata, handles)% hObject handle to add (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'+');set(handles.text1,'string',textstring)% --- Executes on button press in p0.function p0_Callback(hObject, eventdata, handles)% hObject handle to p0 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'0');set(handles.text1,'string',textstring)% --- Executes on button press in sub.function sub_Callback(hObject, eventdata, handles)% hObject handle to sub (see GCBO)% eventdata reserved - to be defined in a future version of MATLABtextstring=get(handles.text1,'string');textstring=strcat(textstring,'-');set(handles.text1,'string',textstring)% --- Executes on button press in div.function div_Callback(hObject, eventdata, handles)% hObject handle to div (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'/');set(handles.text1,'string',textstring)% --- Executes on button press in mul.function mul_Callback(hObject, eventdata, handles)% hObject handle to mul (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'*');set(handles.text1,'string',textstring)% --- Executes on button press in denghao.function denghao_Callback(hObject, eventdata, handles)% hObject handle to denghao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=eval(textstring);set(handles.text1,'string',textstring)% --- Executes on button press in clear.function clear_Callback(hObject, eventdata, handles)% hObject handle to clear (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.text1,'string','0')%--------------------------------------------------------------------function exit_Callback(hObject, eventdata, handles)% hObject handle to exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(gcf)%--------------------------------------------------------------------function calculate_Callback(hObject, eventdata, handles)% hObject handle to calculate (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=eval(textstring);set(handles.text1,'string',textstring)% --- Executes on button press in point.function point_Callback(hObject, eventdata, handles)% hObject handle to point (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textstring=get(handles.text1,'string');textstring=strcat(textstring,'.');set(handles.text1,'string',textstring)设计功能:1.可进行加减乘除四则运算2.可进行清零,退出等三、界面设计及运行结果1-1. GUIDE 设计界面1-2.进入程序初始状态1-3.简单的实例测试.\五、心得及体会通过这次matlab课程设计,让我对matlab有了更深的了解。
MATLAB简易计时器课程设计

MATLAB简易计时器课程设计一、课程目标知识目标:1. 掌握MATLAB软件的基本操作和界面;2. 学习计时器功能的相关函数及参数设置;3. 了解程序设计中的循环结构和条件判断语句;4. 理解计时器在实际应用中的重要性。
技能目标:1. 能够独立编写简易计时器程序,实现倒计时、正计时等功能;2. 能够运用循环结构和条件判断语句优化程序,提高程序执行效率;3. 能够对程序进行调试和修改,解决常见的问题;4. 学会查阅MATLAB帮助文档,获取所需函数和参数信息。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习动力;2. 培养学生面对问题时的耐心和解决问题的能力;3. 培养学生团队协作意识,学会分享和交流;4. 增强学生对科技创新的认识,提高创新精神。
本课程针对高年级学生,结合学科特点和教学要求,设计上述课程目标。
通过本课程的学习,学生将能够掌握MATLAB简易计时器的编程方法,提高编程能力和实际问题解决能力,同时培养积极的学习态度和团队协作精神。
为实现课程目标,后续教学设计和评估将围绕具体学习成果展开,确保课程的有效性和实用性。
二、教学内容1. MATLAB软件入门- 软件安装与界面认识- 基本操作与命令行使用2. 程序设计基础- 变量与数据类型- 流程控制(循环结构、条件判断语句)3. 计时器功能实现- 相关函数(如tic、toc、pause等)- 参数设置与程序优化4. 简易计时器编程实践- 倒计时与正计时实现- 用户交互与界面设计5. 程序调试与优化- 常见错误类型与解决方法- 调试工具与性能分析6. 综合应用与拓展- 计时器在其他领域的应用案例- 创新设计与功能拓展教学内容根据课程目标,结合教材章节进行组织,确保科学性和系统性。
教学大纲安排如下:- 第一节课:MATLAB软件入门及基本操作- 第二节课:程序设计基础与流程控制- 第三节课:计时器功能相关函数学习与实践- 第四节课:简易计时器编程实践与调试- 第五节课:综合应用与拓展教学内容按照以上进度进行,使学生在系统的教学过程中,逐步掌握简易计时器的编程方法,提高实际应用能力。
MATLAB-闹钟GUI的创建

程序%% === 主程序时钟程序======%% === clock1.m (注意使用原始文件名) ======function [ ] = clock1( )tryclose all%% === create the figure ============h0 = figure( 'MenuBar' , 'none' ,...'Color' , 'white' ,...'NumberTitle' , 'off' ,...'Name' , 'Clock' ) ;%% === 背景程序,不用可以删==========% ha=axes('units','normalized','position',[0 0 1 1]) ;% uistack(ha,'down')% II=imread('3.jpg') ; %=== 3.jpg 是图片地址====% image(II)% colormap gray% set(ha,'handlevisibility','off','visible','off') ;%% === create a menu to set the timing clock =====regular_t = uimenu('Parent' , h0 ,...'Label' , '闹钟' ,...'Callback' , @timing) ; %=== 调用了timing.m ====%% === create a menu to calculate the time =====cal_t = uimenu('Parent' , h0 ,...'Label' , '计时' ,...'Callback' , ['run calc_time ;' ]) ; %=== 运行了calc_time.m 文件%% =================theta = linspace(0 , 6.288 , 1000) ; % 6.28 近似等于2*pix1 = 8*cos(theta) ;y1 = 8*sin(theta) ;plot(x1 , y1 , 'color' , [0.5 0.5 0.5] , 'linewidth' , 16) %===时钟的外层hold onaxis equalfill(x1 , y1 , [0.7 0.7 0.7]) ; %=== 时钟的内层text( 0 , 5 , 'the big bag' , 'fontsize' , 16 , 'color' , [0.8 0.8 0.8] , 'HorizontalAlignment' , 'center') ; % the name of the clock lighting phongmaterial metalaxis offaxis([-10 10 -10 10])set(gca , 'position' , [0.1 0.1 0.775 0.815]) ;%% ===========================t_title = floor(clock) ;title([num2str(t_title(1)) '年' num2str(t_title(2)) '月' num2str(t_title(3)) '日'] , 'fontname' , 'Verdana' , 'fontsize' , 13 , 'color' , [0.2 0.2 0.2]) ;%% === 创建一个edit控件去显示数字时间=========h0_edit = uicontrol('parent', h0, ... % a edit to show the hour, minute, second dymaically'enable', 'inactive', ...'BackgroundColor', [1 0.8 0.4], ...'fontname' , 'Verdana' ,...'fontsize' , 12 ,...'style', 'edit', ...'horizontal', 'center', ...'units','normalized' , 'position', [0.38 0.04 0.22 0.08], ...'string', [num2str(t_title(4)) ' : ' num2str(t_title(5)) ' : ' num2str(t_title(6))]);for k=1:12xk=8.8*cos( -2*pi / 12*k + pi/2);yk=8.8*sin(-2*pi / 12*k + pi/2);plot([xk/9*8 xk/9*7],[yk/9*8 yk/9*7] , 'color' , [0.8 0.8 0.8] , 'linewidth' , 3) ;% text(xk , yk , num2str(k) , 'fontsize' , 16 , 'color' , [0.9 0.3 0.8] , 'HorizontalAlignment' , 'center') ; % mark of clockend%% ==========================ti=clock; % get the current time%% === 时针初始位置===========th_out = -(ti(4) + ti(5)/60 + ti(6)/3600)/12*2*pi+pi/2 ; % the angle of clock is different from the axes, so pi/2 is needed to correct.th_in = th_out - pi;hh = plot([1.5*cos(th_in) 5*cos(th_out)] , [1.5*sin(th_in) 5*sin(th_out)] , 'color' , [0.8 0.8 0.8] , 'linewidth' , 9) ;%% === 分针初始位置===========tm_out = -(ti(5) + ti(6)/60)/60*2*pi + pi/2 ;tm_in = tm_out - pi;hm = plot([2*cos(tm_in) 6*cos(tm_out)] , [2*sin(tm_in) 6*sin(tm_out)] , 'color' , [0.8 0.8 0.8] , 'linewidth' , 7) ;%% === 秒针初始位置============ts_out = -(ti(6)/60*2*pi + pi/2) ;ts_in = ts_out - pi;hs = plot([3*cos(ts_in) 7*cos(ts_out)] , [3*sin(ts_in) 7*sin(ts_out)] , 'color' , [0.8 0.8 0.8] , 'linewidth' , 4) ;fill([0.2*cos(theta)] , [0.2*sin(theta)] , 'w') ; % the center crew of the clockset(gcf , 'doublebuffer' , 'on') ;flag = 3 ; % ===while ishandle(h0); %=== 请不要使用1 来无限循环ti = floor(clock) ; % get the current time from loopstr = [num2str(ti(4)) ' : ' num2str(ti(5)) ' : ' num2str(ti(6))] ;set(h0_edit, 'String', str) ; % use the edit to show the current time%% === calculate the next position of pointer of hour =====th_out = -(ti(4) + ti(5)/60 + ti(6)/3600)/12*2*pi+pi/2 ;th_in = th_out - pi;set(hh , 'XData' , [1.5*cos(th_in) 5*cos(th_out)] , 'YData' , [1.5*sin(th_in) 5*sin(th_out)])%% === calculate the next position of pointer of minute =====tm_out = -(ti(5) + ti(6)/60)/60*2*pi + pi/2 ;tm_in = tm_out - pi;set(hm , 'XData' , [2*cos(tm_in) 6*cos(tm_out)] , 'YData' , [2*sin(tm_in) 6*sin(tm_out)])%% === calculate the next position of pointer of second =======ts_out = -(ti(6)/60)*2*pi + pi/2 ;ts_in = ts_out - pi;set(hs, 'XData' , [3*cos(ts_in) 7*cos(ts_out)] , 'YData' , [3*sin(ts_in) 7*sin(ts_out)])% light('position' , [-10,15,0] , 'style' , 'local' , 'color', [0.8,0.3,0.3]) drawnow ;% pause(0.09) ;endcatch'error:*****************************'returnendend%% === 子程序一闹钟程序======%% === timing.m (注意使用原始文件名) ======function [ ] = timing( obj, event )%% === save the current time ========ti = clock ;%% === create a input dialog =========prompt = {'mouth' , 'day' , 'hour' , 'minute' , 'event'} ;title = 'input your timing clock time' ;answer = inputdlg(prompt, title) ;% disp(answer); %=== test code ========= %% === get the time form client =======time_set = clock ;time_set(2) = str2num( answer{1} ) ;time_set(3) = str2num( answer{2} ) ;time_set(4) = str2num( answer{3} ) ;time_set(5) = str2num( answer{4} ) ;time_set(6) = 0 ;T_event{1,1} = answer{5} ;% disp(time_set) ; %=== test code ========%% === show your set time =========str = ['你在' num2str(time_set(1)) '/' answer{1} '/' answer{2} ' ' answer{3} ':' answer{4} '设置了一个闹钟,内容为:' answer{5}] ;% disp(str) ; % === test code =======msgbox(str, 'attention') ;%% === create a timer =============h_timing = timer('Name' , 'H_timing' ,...'TimerFcn' , {@T_ring , T_event},... %=调用了T_ring.m,并传参'ExecutionMode' , 'singleShot' );%% === start the timer =============startat(h_timing, time_set) ;end%% === 子程序一铃声程序======%% === T_ring.m (注意使用原始文件名) ====== function [ ] = T_ring( obj, event , T_event )%UNTITLED Summary of this function goes here% Detailed explanation goes here%% === save the content of cell - T_event =====msg = T_event{1,1} ;% disp(msg) ; % === test code ========msgbox(msg, '你有一个闹铃提醒') ;%% === 这是matlab 自带的铃声,其他的铃声程序可以在网上找=== for i = 1:5load splat ;sound(y, Fs) ;endend%% === 子文件计时程序(注:这不是一个函数文件)=== %% === calc_time.m (注意使用原始文件名) ====== %% === create a figure ==========h1 = figure( 'MenuBar' , 'none' ,...'Color' , 'white' ,...'NumberTitle' , 'off' ,...'units','normalized' , 'position', [0.35 0.4 0.3 0.2], ...'Name' , 'Calc_time' ) ;%% ===h1_text = uicontrol('parent', h1, ...'BackgroundColor', [1 0.8 0.4], ...'fontname' , 'Verdana' ,...'fontsize' , 20 ,...'style', 'text', ...'horizontal', 'center', ...'units','normalized' , 'position', [0.15 0.5 0.7 0.3], ...'string', '0 : 0 : 0.0' );%% ===h1_button_start = uicontrol('parent', h1, ...'BackgroundColor', [1 0.8 0.4], ...'fontname' , 'Verdana' ,...'fontsize' , 12 ,...'style', 'pushbutton', ...'horizontal', 'center', ...'units','normalized' , 'position', [0.15 0.2 0.2 0.2], ...'callback' , [' k=0 ;'] ,...'string', 'start' );%% ===h1_button_stop = uicontrol('parent', h1, ...'BackgroundColor', [1 0.8 0.4], ...'fontname' , 'Verdana' ,...'fontsize' , 12 ,...'horizontal', 'center', ...'units','normalized' , 'position', [0.40 0.2 0.2 0.2], ...'callback' , [...' k=1 ; , '] ,...'string', 'stop' ) ;%% ===h1_button_reset = uicontrol('parent', h1, ...'BackgroundColor', [1 0.8 0.4], ...'fontname' , 'Verdana' ,...'fontsize' , 12 ,...'horizontal', 'center', ...'units','normalized' , 'position', [0.65 0.2 0.2 0.2], ...'callback' , [...' k=2 ; , '] ,...'string', 'reset' ) ;%% ===k = 2 ;while ishandle(h1)if ( 0 == k )t_that = clock ;while ishandle(h1)t_this = clock ;% ==if ( t_this(6) >= t_that(6) )t_second = t_this(6) - t_that(6) ;elseif ( t_this(5) > t_that(5) )t_this(5) = t_this(5) - 1 ;t_second = t_this(6) + 60 - t_that(6) ;elset_this(4) = t_this(4) - 1 ;t_this(5) = t_this(5) + 59 ;t_second = t_this(6) + 60 - t_that(6) ;endend% ==if ( t_this(5) >= t_that(5) )t_minute = t_this(5) - t_that(5) ;elset_this(4) = t_this(4) - 1 ;t_minute = t_this(5) + 60 - t_that(5) ;end% ==t_hour = t_this(4) - t_that(4) ;% ==set( h1_text , 'String' , [num2str(t_hour) ' : ' num2str(t_minute) ' : ' num2str(t_second)] ) ;pause( 0.1 ) ; % === ! important pause in inside while =======% ==if ( k == 1 )break ;endif ( k == 2 )set( h1_text , 'String' , '0 : 0 : 0.0' ) ;break ;endend %=== close inside while ==========endif ( k == 2 )set( h1_text , 'String' , '0 : 0 : 0.0' ) ;endpause( 0.1 ) ; % === ! important pause in outside while ===========end %=== close outside while ==========摘要使用matlan的画图函数,如:plot 、fill 等,设计了一个简约的圆形时钟GUI,并使用图形句柄实现了动态显示时间,自带图像背景,具有闹钟功能。
用matlab做时钟的课程设计

用matlab 做时钟的课程设计一、课程目标知识目标:1. 理解并掌握Matlab软件的基本操作和功能;2. 学习时钟的基本构成和运行原理;3. 掌握使用Matlab进行时钟设计的方法和步骤;4. 了解并应用循环、选择等基本编程结构。
技能目标:1. 能够独立操作Matlab软件进行基本编程;2. 运用所学知识,设计并实现一个具有基本功能的时钟程序;3. 学会分析问题、解决问题的能力,具备一定的编程调试技巧。
情感态度价值观目标:1. 培养学生对编程和Matlab软件的兴趣,激发学习热情;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯;4. 增强学生的自信心,鼓励他们在面对挑战时勇于尝试和克服困难。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握Matlab编程和时钟设计的基本方法。
学生特点:学生具备一定的计算机操作能力,对编程和Matlab软件有一定了解,但可能缺乏实际编程经验。
教学要求:注重理论与实践相结合,以学生为主体,引导学生主动参与课堂实践,培养他们的编程能力和解决问题的能力。
同时,关注学生的个体差异,提供针对性的指导和帮助,确保每位学生都能在课程中取得实质性的进步。
通过本课程的学习,使学生能够独立完成一个具有实际应用价值的时钟设计项目。
二、教学内容1. Matlab软件基本操作与功能介绍:包括Matlab界面认识、基本命令操作、数据类型与运算符、矩阵运算等;2. 时钟的基本构成与运行原理:分析时钟的三个基本部分(时、分、秒针),了解其运行原理;3. 编程结构与控制语句:介绍顺序结构、循环结构(for、while)、选择结构(if-else)等;4. Matlab编程实现时钟设计:利用所学知识,编写程序,实现时钟的显示和运行;- 时钟界面设计:绘制时钟表盘、刻度、指针等;- 时钟功能实现:编写代码,实现时钟的实时更新、指针移动等功能;- 时钟优化:调整时钟界面、添加特效等;5. 教学进度的安排:- 第一课时:Matlab软件基本操作与功能介绍;- 第二课时:时钟的基本构成与运行原理;- 第三课时:编程结构与控制语句;- 第四课时:Matlab编程实现时钟设计(1);- 第五课时:Matlab编程实现时钟设计(2)及优化。
时分复用的matlab课程设计

时分复用的matlab课程设计一、教学目标本课程的目标是让学生掌握时分复用技术的基本原理,能够在MATLAB环境下进行简单的时分复用系统设计和仿真。
具体分为以下三个部分:1.知识目标:使学生了解时分复用的基本概念、原理和应用,掌握MATLAB的基本使用方法。
2.技能目标:培养学生利用MATLAB进行时分复用系统设计和仿真的能力,提高学生的实际操作技能。
3.情感态度价值观目标:培养学生对通信技术的兴趣,提高学生解决实际问题的积极性和责任感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.时分复用的基本概念和原理:包括时分复用的定义、工作原理和优点等。
2.MATLAB基本使用方法:包括MATLAB的启动和退出、变量定义、运算符、编程语句等。
3.时分复用系统设计和仿真:利用MATLAB对简单的时分复用系统进行设计和仿真,分析系统性能。
三、教学方法为了达到本课程的教学目标,将采用以下几种教学方法:1.讲授法:用于讲解时分复用的基本概念和原理,MATLAB的基本使用方法。
2.案例分析法:通过分析具体的时分复用系统案例,使学生更好地理解和掌握相关知识。
3.实验法:让学生动手实践,利用MATLAB进行时分复用系统设计和仿真,提高实际操作能力。
四、教学资源为了保证本课程的顺利进行,将准备以下教学资源:1.教材:《MATLAB教程》或《时分复用技术教程》。
2.参考书:提供一些关于MATLAB和时分复用的参考书籍,供学生自主学习。
3.多媒体资料:制作课件和教学视频,用于辅助讲解和演示。
4.实验设备:计算机、MATLAB软件和其他必要的实验设备。
五、教学评估本课程的评估方式包括以下几个部分:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的30%。
2.作业:布置适量的作业,让学生巩固所学知识,占总评的40%。
3.考试:包括期中和期末考试,考试内容涵盖本课程所有知识点,占总评的30%。
评估方式应客观、公正,能够全面反映学生的学习成果。
MATLAB制作漂亮时钟

MATLAB制作漂亮手表 (1)一、问题的提出 (1)二、理论分析 (1)三、实验步骤 (2)四、程序实现 (2)五、实验结果及结果分析 (6)六、程序及其说明 (9)MATLAB制作漂亮手表一、问题的提出随着科技的日新月异,人们的生活节奏变得越来越快,而准确的把我时间也变得越来越重要,几乎人人都会携带可以知道时间的东西,比如手表,手机,怀表,于是在此提出问题,如何通过matlab数字化模拟日常生活中所用的手表的转动?二、理论分析完整的时钟界面有时针,分针,秒针以及刻度等组成,而要用matlab模拟出这些部件,则只需由外至内,一部部的模拟出表面的图形,以及它的运转法则。
三、实验步骤1.了解手表的表盘中由哪些东西构成,将需要通过matlab作出来的部件记下。
2.观察手表的秒针,分针,以及时针的运转规律,构想出通过matlab来实现指针的转动方法。
3.着手编写matlab程序来实现这一过程。
4.完成程序,检验程序的可行性,并完善,使作出来的手表表盘尽可能的美化。
5.完成实验报告。
四、程序实现1.画一个大的圆圈,表示手表的最外层的圈圈,通过plot画圆来实现,x,y用参数方程确定。
2.通过line画直线的方式,画出表盘中得分针和秒针的小的刻度,一共60个。
3.同样的方式,画出时针的大的刻度,一共12个,并在正上方的刻度下表上12.4.运用clock指令读取系统时间,并将其作为初始时间。
5.采用同样的方式分别做出第一、第二、第三个小圆盘,具体程序就不在此给出了。
6.分别做出大表盘以及小表盘中得指针,采用fill指令分别实现时针,分针和秒针。
在此列举大表盘中得时针做出方法。
7.加入以数字形式显示时间的指令,具体实现方法如下显示初始时间:8.设计指针的运转,当秒针每转动一秒时,相应的改变大表盘中秒针,分针,以及时针的位置,以及小圆圈中得指针位置。
数据的改变:大圆圈的指针数据:小圆圈中指针的数据:图像中指针的位置改变:9.当指针转动一圈时,相应的数据应如何变化:10.数字显示也许相应的改变:11.为使秒针的运动符合时间的规律,采用pause指令:五、实验结果及结果分析运行程序,得到结果:六、程序及其说明clear;clf;%%%%% 作出大的表盘%%%%%% set(gcf,'name','钟表','color','white'); theta=linspace(0,2*pi,10000);r=10;x=r.*cos(theta);y=r.*sin(theta);shg;plot(x,y);axis([-12 12 -15 12]);axis equal;hold on;axis('off');text(-0.6,9,'\fontsize{20}12');theta0=[];xa=[];xb=[];ya=[];yb=[];for i=1:60 %画出60个刻度theta0(i)=i*pi/30;xa=(r-0.3)*cos(theta0(i));xb=(r-0.3)*sin(theta0(i));ya=r*cos(theta0(i));yb=r*sin(theta0(i));line([xa;ya],[xb;yb]);endfor i=1:12 %画出12个时针的刻度,为了美观,采取个别不画的原则if i==1||i==3||i==5||i==9continueendtheta0(i)=i*pi/6;xa=(r-1.5)*cos(theta0(i));xb=(r-1.5)*sin(theta0(i));ya=(r-0.36)*cos(theta0(i));yb=(r-0.36)*sin(theta0(i));line([xa;ya],[xb;yb],'linewidth',3);endfor i=1:12 %在60个小刻度的基础上对时针的刻度加粗theta0(i)=i*pi/6;xa=(r-0.3)*cos(theta0(i));xb=(r-0.3)*sin(theta0(i));ya=r*cos(theta0(i));yb=r*sin(theta0(i));line([xa;ya],[xb;yb],'linewidth',3);endt=clock;h0=t(4); %设定初始时间m0=t(5);s0=floor(t(6));thetas1=(15-s0)*pi/30; %计算3个小表盘中指针的初始角度thetam1=(15-m0)*pi/30-s0*pi/1800;thetah1=(6-h0)*pi/12-m0*pi/720-s0*pi/43200; %%%%%%% 作第一个小表盘%%%%%%%%%r1_0=6;theta1_0=pi/6;r1=3;theta1=linspace(0,2*pi,10000);x1_0=r1_0*cos(theta1_0);y1_0=r1_0*sin(theta1_0);x1=x1_0+r1.*cos(theta1);y1=y1_0+r1.*sin(theta1);plot(x1,y1);theta_10=[];x1a=[];x1b=[];y1a=[];y1b=[];for i=1:12 %画出第一个小表盘的刻度theta_10(i)=i*pi/6;x1a=x1_0+(r1-0.3)*cos(theta_10(i));x1b=y1_0+(r1-0.3)*sin(theta_10(i));y1a=x1_0+r1*cos(theta_10(i));y1b=y1_0+r1*sin(theta_10(i));line([x1a;y1a],[x1b;y1b],'linewidth',2);endtext(x1_0+r1-0.7,y1_0,'6'); %部分刻度给予数字显示text(x1_0-r1+0.1,y1_0,'18');text(x1_0-0.4,y1_0-r1+0.5,'12');text(x1_0-0.4,y1_0+r1-0.5,'24');h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-p i); %作出第一个小表盘的指针h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah1+pi/2);h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);h1y4=y1_0+0.2*sin(thetah1 -pi/2);h1=fill([h1x1,h1x2,h1x3,h1x4,h1x1],[h1y1,h1y2,h1y3,h1y4,h1y1 ],'g');plot(x1_0,y1_0,'w .','markersize',6);%%%%%%%% 作第二个小表盘%%%%%%%%r2_0=6;theta2_0=5*pi/6;r2=3;theta2=linspace(0,2*pi,10000);x2_0=r2_0*cos(theta2_0);y2_0=r2_0*sin(theta2_0);x2=x2_0+r2.*cos(theta2);y2=y2_0+r2.*sin(theta2);plot(x2,y2);theta_20=[];x2a=[];x2b=[];y2a=[];y2b=[];for i=1:60 %画出第二个小表盘的刻度theta_20(i)=i*pi/30;x2a=x2_0+(r2-0.5)*cos(theta_20(i));x2b=y2_0+(r2-0.5)*sin(theta_20(i));y2a=x2_0+r2*cos(theta_20(i));y2b=y2_0+r2*sin(theta_20(i));line([x2a;y2a],[x2b;y2b],'linewidth',1);endtext(x2_0-0.3,y2_0+r2-0.8,'60'); %部分刻度给予数字显示text(x2_0+1.4,y2_0-1.2,'20');text(x2_0-2,y2_0-1.2,'40');s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi) ; %作出第二个小表盘的指针s1x2=x2_0+0.2*cos(thetas1+pi/2);s1y2=y1_0+0.2*sin(thetas1 +pi/2);s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2);s1=fill([s1x1,s1x2,s1x3,s1x4,s1x1],[s1y1,s1y2,s1y3,s1y4,s1y1],'g ');plot(x2_0,y2_0,'w .','markersize',7);%%%%%% 添加中间小圆圈,美化表盘%%%%%%for i=1:60 %画出12个时针的刻度,为了美观,采取个别不画的原则if(i>=1&&i<=10)||(i>=20&&i<=30)||(i>=40&&i<=50)||i==60continueendtheta0(i)=i*pi/30;xa=(r-4.8)*cos(theta0(i));xb=(r-4.8)*sin(theta0(i));ya=(r-4.5)*cos(theta0(i));yb=(r-4.5)*sin(theta0(i));if i==15||i==35||i==55line([xa;ya],[xb;yb],'linewidth',2);continueendline([xa;ya],[xb;yb],'linewidth',1);end%%%%%% 作出第三个小表盘%%%%%%%%r3_0=6;theta3_0=3*pi/2;r3=3;theta3=linspace(0,2*pi,10000);x3_0=r3_0*cos(theta3_0);y3_0=r3_0*sin(theta3_0);x3=x3_0+r3.*cos(theta3);y3=y3_0+r3.*sin(theta3);plot(x3,y3);theta_30=[];x3a=[];x3b=[];y3a=[];y3b=[];for i=1:60 %画出第三个小表盘的刻度theta_30(i)=i*pi/30;x3a=x3_0+(r3-0.2)*cos(theta_30(i));x3b=y3_0+(r3-0.2)*sin(theta_30(i));y3a=x3_0+r3*cos(theta_30(i));y3b=y3_0+r3*sin(theta_30(i));ifi==14||i==15||i==16||i==30||i==44||i==45||i==46||i==60 continueendline([x3a;y3a],[x3b;y3b],'linewidth',1);endfor i=1:12 %整分的刻度给予加粗if i==3||i==6||i==9||i==12continueendtheta_30(i)=i*pi/6;x3a=x3_0+(r3-0.5)*cos(theta_30(i));x3b=y3_0+(r3-0.5)*sin(theta_30(i));y3a=x3_0+r3*cos(theta_30(i));y3b=y3_0+r3*sin(theta_30(i));line([x3a;y3a],[x3b;y3b],'linewidth',1);endtext(x3_0-0.3,y3_0+r3-0.3,'60','fontsize',10); %部分刻度给予数字显示text(x3_0-0.3,y3_0-r3+0.3,'30','fontsize',10);text(x3_0+2.4,y3_0,'15','fontsize',8);text(x3_0-2.9,y3_0,'45','fontsize',8);m1x1=x3_0+0.4*cos(thetam1-pi);m1y1=y3_0+0.4*sin(thetam 1-pi);%作出第三个小表盘的指针m1x2=x3_0+0.2*cos(thetam1+pi/2);m1y2=y3_0+0.2*sin(theta m1+pi/2);m1x3=x3_0+1.8*cos(thetam1);m1y3=y3_0+1.8*sin(thetam1); m1x4=x3_0+0.2*cos(thetam1-pi/2);m1y4=y3_0+0.2*sin(theta m1-pi/2);m1=fill([m1x1,m1x2,m1x3,m1x4,m1x1],[m1y1,m1y2,m1y3,m1 y4,m1y1],'g');plot(x3_0,y3_0,'w .','markersize',7);%%%%%% 作出大表盘的指针%%%%%%%thetas=(15-s0)*pi/30;thetam=(15-m0)*pi/30-s0*pi/1800;thetah=(3-h0)*pi/6-m0*pi/360-s0*pi/21600;hx1=(r-7)*cos(thetah+pi/25);hy1=(r-7)*sin(thetah+pi/25);hx2=(r-4)*cos(thetah);hy2=(r-4)*sin(thetah);hx3=(r-7)*cos(thetah-pi/25);hy3=(r-7)*sin(thetah-pi/25);h=fill([0,hx1,hx2,hx3,0],[0,hy1,hy2,hy3,0],'g');%作出大表盘的时针plot(0,0,'g .','markersize',40);mx1=(r-6)*cos(thetam+pi/30);my1=(r-6)*sin(thetam+pi/30);mx2=(r-1.5)*cos(thetam);my2=(r-1.5)*sin(thetam);mx3=(r-6)*cos(thetam-pi/30);my3=(r-6)*sin(thetam-pi/30);m=fill([0,mx1,mx2,mx3,0],[0,my1,my2,my3,0],'r');%作出大表盘的分针plot(0,0,'r .','markersize',30);sx1=(r-8)*cos(thetas+pi);sy1=(r-8)*sin(thetas+pi);sx2=(r-0.3)*cos(thetas);sy2=(r-0.3)*sin(thetas);s=line([sx1;sx2],[sy1;sy2],'color','m','linewidth',3);%作出大表盘的秒针plot(0,0,'m .','markersize',20);i=1;j=1;k=1;time=text(0,-12,[num2str(h0),':',num2str(m0),':',num2str(s0)]); %以数字格式显示初始时间while 1if i>60i=1;endthetas1=thetas1-pi/30; %时间走动时,变化相应的表盘的摆针的角度thetam1=thetam1-pi/1800;thetah1=thetah1-pi/43200;sx1=(r-8)*cos(thetas-i*pi/30+pi);sy1=(r-8)*sin(thetas-i*pi/30+pi);sx2=(r-0.3)*cos(thetas-i*pi/30);sy2=(r-0.3)*sin(thetas-i*pi/30);mx1=(r-6)*cos(thetam-j*pi/1800+pi/30);my1=(r-6)*sin(thetam-j*pi/1800+pi/30);mx2=(r-1.5)*cos(thetam-j*pi/1800);my2=(r-1.5)*sin(thetam-j*pi/1800);mx3=(r-6)*cos(thetam-j*pi/1800-pi/30);my3=(r-6)*sin(thetam-j*pi/1800-pi/30);hx1=(r-7)*cos(thetah-k*pi/21600+pi/25);hy1=(r-7)*sin(thetah-k*pi/21600+pi/25);hx2=(r-4)*cos(thetah-k*pi/21600);hy2=(r-4)*sin(thetah-k*pi/21600);hx3=(r-7)*cos(thetah-k*pi/21600-pi/25);hy3=(r-7)*sin(thetah-k*pi/21600-pi/25);s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi) ;s1x2=x2_0+0.2*cos(thetas1+pi/2);s1y2=y1_0+0.2*sin(thetas1 +pi/2);s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2);m1x1=x3_0+0.4*cos(thetam1-pi);m1y1=y3_0+0.4*sin(thetam 1-pi);m1x2=x3_0+0.2*cos(thetam1+pi/2);m1y2=y3_0+0.2*sin(theta m1+pi/2);m1x3=x3_0+1.8*cos(thetam1);m1y3=y3_0+1.8*sin(thetam1);m1x4=x3_0+0.2*cos(thetam1-pi/2);m1y4=y3_0+0.2*sin(theta m1-pi/2);h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-p i);h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah 1+pi/2);h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);h1y4=y1_0+0.2*sin(thetah1 -pi/2);set(s,'xdata',[sx1;sx2],'ydata',[sy1;sy2]); %画出变化后的指针位置set(m,'xdata',[0,mx1,mx2,mx3,0],'ydata',[0,my1,my2,my3,0]);set(h,'xdata',[0,hx1,hx2,hx3,0],'ydata',[0,hy1,hy2,hy3,0]);set(m1,'xdata',[m1x1,m1x2,m1x3,m1x4,m1x1],'ydata',[m1y1,m 1y2,m1y3,m1y4,m1y1]);set(s1,'xdata',[s1x1,s1x2,s1x3,s1x4,s1x1],'ydata',[s1y1,s1y2,s1y 3,s1y4,s1y1]);set(h1,'xdata',[h1x1,h1x2,h1x3,h1x4,h1x1],'ydata',[h1y1,h1y2,h 1y3,h1y4,h1y1]);i=i+1;k=k+1;j=j+1;s0=s0+1; %计算当前时间if s0==60s0=0;m0=m0+1;endif m0==60m0=0;h0=h0+1;endif h0==24h0=0;enddelete(time); %删除句柄if s0<10&&m0<10&&h0<10 %重新显示当前时间,判断时间的数字位数,选择是否在数字前面加0time=text(-3,-12,['0',num2str(h0),':0',num2str(m0),':0',num2str (s0)],'fontsize',30,'Fontname','Times New Roman');else if s0<10&&m0<10&&h0>=10time=text(-3,-12,[num2str(h0),':0',num2str(m0),':0',num2str(s0 )],'fontsize',30,'Fontname','Times New Roman');else if s0<10&&m0>=10&&h0<10time=text(-3,-12,['0',num2str(h0),':',num2str(m0),':0',num2str(s 0)],'fontsize',30,'Fontname','Times New Roman');else if s0<10&&m0>=10&&h0>=10time=text(-3,-12,[num2str(h0),':',num2str(m0),':0',num2str(s0)] ,'fontsize',30,'Fontname','Times New Roman');else if s0>=10&&m0<10&&h0<10time=text(-3,-12,['0',num2str(h0),':0',num2str(m0),':',num2str(s 0)],'fontsize',30,'Fontname','Times New Roman');else if s0>=10&&m0<10&&h0>=10 time=text(-3,-12,[num2str(h0),':0',num2str(m0),':',num2str(s0)],'fontsize',30,'Fontname','Times New Roman');else if s0>=10&&m0>=10&&h0<10time=text(-3,-12,['0',num2str(h0),':',num2str(m0),':',num2str(s0 )],'fontsize',30,'Fontname','Times New Roman');elsetime=text(-3,-12,[num2str(h0),':',num2str(m0),':',num2str(s0)],' fontsize',30,'Fontname','Times New Roman');endendendendendendendpause(0.989);end。
《数学软件》课程设计论文用matlab做一个小闹钟

《数学软件》课程设计论文用matlab做一个小闹钟《数学软件》课程设计广东海洋大学教师评语:《数学软件》课程设计MATLAB 设计一个时钟和闹钟院(系)名称理学院专业班级信计1132 姓名杨剑鸿学号201311921229 指导教师李志成绩指导教师签字:2015年6月15日用《数学软件》课程设计摘要:MATLAB 是一款强大的、应用广泛的软件,主要利用MATLAB 的相关编程来设计实现时钟界面显示效果关键词:时间、闹钟、MATLAB、界面目的:创建一个时钟与闹钟小软件,用于看时间,还有修改时间并且设定闹钟。
还能重用历史用过的闹钟作为闹钟,但仅编了只能设置一个闹钟,可以添加程序达到设置多个闹钟。
功能介绍:此小软件能调整时间,以钟表方式显示时间,设置闹钟能打开或者关闭闹钟,并且记录历史调节过的前5个闹钟,提供方便再使用曾经用过的闹钟。
界面布局:见下图创建过程:1.加入如图的各种控件;安排好位置,点击’Align Objects’按钮对控件对齐。
2.改变各控件相关的属性值:的‘string’都改为’0’,并将其将坐标文本框下面的三个可编辑文本1《数学软件》课程设计‘tag’属性分别改为’hour’、’min’、’sec’。
以便在添加代码时能更快找到对应函数。
坐标文本框旁边的三个可编辑文本的‘string’都改为’ ‘,并将其‘tag’属性分别改为’hour _naozhong’、’min _naozhong’、’sec _naozhong’。
以便在添加代码时能更快找到对应函数。
将这四个静态文本框的’String’改为’:’。
将坐标文本框右上角的静态文本框的‘string’改为’●’。
将坐标文本框左下角的静态文本框文本框的‘string’改为’修正时间:’。
将历史闹钟显示的2个静态的‘string’分别改为’历史闹钟:’、’时-分-秒’。
将数字的‘string’分别改为’1.’、’2.’、’3.’、’4.’、’5.’。
matlab时间序列分析课程设计

matlab时间序列分析课程设计一、课程目标知识目标:1. 理解时间序列分析的基本概念,掌握其数学表达和性质;2. 掌握使用MATLAB进行时间序列数据的处理、可视化及分析方法;3. 学习时间序列预测模型,如AR、MA、ARMA和ARIMA等,并了解其适用场景。
技能目标:1. 能够运用MATLAB软件进行时间序列数据的读取、预处理和存储;2. 能够利用MATLAB工具箱进行时间序列的图表绘制,并分析其特征;3. 能够运用所学时间序列模型对实际数据进行预测分析,并评估预测结果的准确性。
情感态度价值观目标:1. 培养学生主动探索、合作交流的学习态度,增强问题解决能力;2. 培养学生对数据分析的兴趣,提高数据分析素养,使其认识到数据在现实生活中的重要性;3. 引导学生关注时间序列分析在科学研究、工程实践等领域的应用,提高学生的专业素养。
课程性质分析:本课程为高年级本科或研究生阶段的数学、统计学、经济学等专业学生的专业选修课。
课程旨在使学生掌握时间序列分析的基本理论和方法,并能够运用MATLAB软件进行实际数据分析。
学生特点分析:学生已经具备一定的高等数学、统计学和计算机编程基础,具有较强的逻辑思维能力和动手操作能力。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力;2. 采用案例教学,引导学生运用所学知识解决实际问题;3. 加强课堂讨论,鼓励学生提问、分享观点,提高课堂互动性。
二、教学内容1. 时间序列分析基本概念:时间序列的定义、平稳时间序列及其性质、白噪声过程。
2. MATLAB时间序列数据处理:数据导入与导出、数据预处理、时间序列数据可视化。
- 教材章节:第三章“时间序列数据及其预处理”3. 时间序列分析模型:- 自回归模型(AR):模型原理、参数估计、预测方法。
- 教材章节:第四章“自回归模型”- 移动平均模型(MA):模型原理、参数估计、预测方法。
- 教材章节:第五章“移动平均模型”- 自回归移动平均模型(ARMA):模型原理、参数估计、预测方法。
MATLAB时钟万年历

时钟万年历电气工程及其自动化12级3班制作人:杨福1238170349党国椿1238170339一、程序介绍本程序是一个时钟日历软件。
程序自动运行时,调用系统当前日期和时间显示,日期可以更改达到万年历效果而且可以恢复当前日历。
二、程序界面三、程序源代码function wannianliglobal aa ti hs hm hh;aa=1;hs=0;hm=0;hh=0;hfig=figure('NumberTitle','off','MenuBar','none','position',[330 180 600 350],'name','时钟万年历','color','c');%建立窗口,设置窗口位置,去掉标题栏,建立自己的标题栏editdate=['s=clock;',' p1={''年'',''月'',''日''};','A=inputdlg(p1,''日期:'',1);', ' s(1)=str2num(A{1});',' s(2)=str2num(A{2});',' s(3)=str2num(A{3});', 'rili(s);' ] ;u1=uimenu(hfig,'label','更改日期','call',editdate);u2=uimenu(hfig,'label','当前时间','call','ti=clock;rili(ti);');u3=uimenu(hfig,'label','退出','Call','close(gcf)');u4=uicontrol(hfig,'style','text','string','杨福1238170349 党国椿1238170339','fontsize',10, 'Units','normalized', 'position',[0 0 0.2 0.1], 'back','w')%制作人信息ti=clock;rili(ti);ck(ti);%定义时钟函数调用子程序运行完后提示有错function f=rili(ti)%万年历程序global h3a=calendar(ti(1),ti(2));for i=1:6%日历框for j=1:7if a(i,j)==0h(i*7+j)=uicontrol(gcf,'Style','text','Units','normalized','position',[0.45+0.06*j0.65-0.08*i 0.06 0.08],'fontsize',13, 'fontweight','bold','back','y');%日历框定义位置颜色elseh(i*7+j)=uicontrol(gcf,'Style','text','string',a(i,j),'Units','normalized','position',[0.45+0.06*j 0.65-0.08*i 0.06 0.085],'fontsize',13,'fontweight','bold','back','y');%日历日期位置排序endendendh2=uicontrol(gcf,'Style','text','string','日一二三四五六',...%万年历的星期几的位置,标题不能随窗口变化移动位置解决不'Units','normalized', 'position',[0.51 0.65 0.42 0.1],'fontsize',16, 'fontweight','bold','back',[0.2 0.8 0.2]);for m=1:3h3(m)=uicontrol(gcf,'Style','text','string',num2str(ti(m)), 'Units','normalized', 'position',[0.39+0.13*m 0.78 0.09 0.08],'back','m','fontsize',13, 'fontweight','bold');%显示数字日期enduicontrol(gcf,'Style','text','string','年', 'Units','normalized', 'position',[0.61 0.78 0.04 0.08],'back','m','fontsize',13, 'fontweight','bold');uicontrol(gcf,'Style','text','string','月', 'Units','normalized', 'position',[0.73 0.78 0.050.08],'back','m','fontsize',13, 'fontweight','bold');uicontrol(gcf,'Style','text','string','日', 'Units','normalized', 'position',[0.86 0.78 0.04 0.08],'back','m','fontsize',13, 'fontweight','bold'); %年月日显示的位置function f=ck(ti)%时钟程序global aa hs hm hhset(gca,'position',[[0 0 0.5 1.0]]) %时钟的位置A=linspace(0,2*pi,1000); %画时针的外圈x1=7*cos(A);y1=7*sin(A);plot(x1,y1,'b','linewidth',1.5)hold onfill(0.3*cos(A),0.3*sin(A),'r'); %画钟表的内圈axis offaxis([-10 10 -10 10]) %画钟表,去掉坐标轴显示样式axis equalfor k=1:12;xk=6*cos(-2*pi/12*k+pi/2);yk=6*sin(-2*pi/12*k+pi/2);h=text(xk-0.5,yk,num2str(k),'fontsize',13,'color','k'); %外圈的数字字体,颜色,大小endth=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; %时针位置颜色线粗hh=line([0 4*cos(th)],[0 4*sin(th)],'color', 'r','linewidth',5);set(hh,'EraseMode','Xor');tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2; % 分针位置颜色线粗hm=line([0 5*cos(tm)],[0 5*sin(tm)],'color', 'r','linewidth',3);set(hm,'EraseMode','Xor');ts=-(ti(6))/60*2*pi+pi/2; % 秒针位置颜色线粗hs=line([0 6.5*cos(ts)],[0 6.5*sin(ts)],'color', 'r','linewidth',2);set(hs,'EraseMode','Xor');set(gcf,'doublebuffer','on');while 1if aa==0breakendth=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; %时针长度形状设置set(hh,'XData',[0 4*cos(th)],'YData',[0 4*sin(th)])%赋值给横纵坐标动态这里有毛错啊检查几天了tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2; % 分针长度形状设置set(hm,'XData',[0 5*cos(tm)],'YData',[0 5*sin(tm)]) %赋值给横纵坐标动态ts=-(ti(6))/60*2*pi+pi/2; % 秒针长度形状设置set(hs,'XData',[0 6.5*cos(ts)],'YData',[0 6.5*sin(ts)]) %赋值给横纵坐标动态drawnow;pause(1) ; %时间更新的周期ti(6)=ti(6)+1;if ti(6)>60 %秒针进位ti(6)=0;ti(5)=ti(5)+1;endif ti(5)>60 %分针进位ti(5)=0;ti(4)=ti(4)+1;endif 24>ti(4)>12 %时针清零ti(4)=0;endend。
课程设计--连续时间信号和系统时域分析及MATLAB实现

课程设计任务书题目:连续时间信号和系统时域分析及MATLAB实现课题内容:一、用MATLAB实现常用连续时间信号的时域波形(通过改变参数,分析其时域特性)。
二、用MATLAB实现信号的时域运算三、用MATLAB实现信号的时域变换(参数变化,分析波形变化)1、反转,2、使移(超时,延时),3、展缩,4、倒相,5、综合变化四、用MATLAB实现信号简单的时域分解1、信号的交直流分解,2、信号的奇偶分解五、用MATLAB实现连续时间系统的卷积积分的仿真波形给出几个典型例子,对每个例子,要求画出对应波形。
六、用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形。
给出几个典型例子,四种调用格式。
七、利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形。
给出几个典型例子,要求可以改变激励的参数,分析波形的变化。
时间安排:学习MATLAB语言的概况第1天学习MATLAB语言的基本知识第2、3天学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天课程设计第6-9天答辩第10天指导教师签名:年月日目录摘要 (Ⅰ)1.绪论 (1)2.对课题内容的分析 (2)2.1连续时间信号概述 (2)2.2采样定理 (2)2.3总体思路 (2)3.设计内容 (2)3.1用MATLAB实现常用连续时间信号的时域波形 (2)3.1.1单位阶跃信号和单位冲击信号 (2)3.1.2正弦信号 (4)3.1.3指数信号 (5)3.1.4实指数信号和虚指数信号 (6)3.2用MATLAB实现信号的时域运算 (7)3.2.1相加 (7)3.2.2相乘 (8)3.2.3数乘 (9)3.2.4微分 (10)3.2.5积分 (12)3.3用MATLAB实现信号的时域变换 (13)3.4用MATLAB实现信号简单的时域分解 (15)3.4.1 交直流分解 (15)3.4.2 奇偶分解 (16)3.5用MATLAB实现连续时间系统的卷积积分的仿真波形 (18)3.6用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形 (19)3.7利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形 (20)4.心得体会 (22)5.参考文献 (23)摘要本文介绍了基于MATLAB的连续时间信号与系统时域分析。
matlab数字钟课程设计

matlab数字钟课程设计一、课程目标知识目标:1. 理解并掌握Matlab软件的基本操作和编程方法。
2. 学会使用Matlab实现数字时钟的功能,包括时、分、秒的显示和更新。
3. 了解数字时钟的原理,掌握时间计算和格式化的方法。
技能目标:1. 能够独立操作Matlab软件,编写并调试简单的程序。
2. 培养逻辑思维和问题解决能力,通过编程实现数字时钟的功能。
3. 学会运用所学的编程知识,解决实际生活中的时间显示问题。
情感态度价值观目标:1. 培养学生对电子信息学科的兴趣,激发学习热情。
2. 增强学生的团队合作意识,培养在项目实践中相互协作、共同解决问题的能力。
3. 培养学生严谨、细心的学习态度,养成编程过程中注意代码规范和调试的好习惯。
课程性质:本课程为实践性较强的课程,通过实际操作和编程,让学生掌握Matlab软件的使用,培养编程思维。
学生特点:学生处于高年级阶段,已具备一定的编程基础和逻辑思维能力,能够较快地理解和掌握Matlab编程。
教学要求:教师需注重理论与实践相结合,引导学生主动参与,注重个体差异,鼓励学生提问和分享,提高课堂互动性。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. Matlab软件基本操作:介绍Matlab软件的界面和基本功能,包括变量定义、数据类型、运算符和基本输入输出操作。
- 教材章节:Matlab入门与基础操作2. Matlab编程基础:讲解Matlab编程的基本语法,如流程控制(条件语句、循环语句)、函数定义和调用。
- 教材章节:Matlab编程基础3. 数字时钟原理与实现:分析数字时钟的原理,学习使用Matlab实现数字时钟的功能。
- 教材章节:数字时钟设计与实现4. 时间计算与格式化:学习时间计算的方法,掌握时间格式化的技巧,以便在数字时钟中正确显示时、分、秒。
- 教材章节:时间计算与格式化5. 项目实践:将所学知识应用于实际项目中,分小组进行数字时钟的设计与实现,提高团队协作能力。
Matlab课程设计

Matlab课程设计⼀.课程设计⽬的1.熟悉帧复接/解复接器在通信系统中所处的地位及作⽤2.了解时分复⽤的⼯作过程和实现细节,⽐如收发时钟抖动,信号时间弥散等因素对具体时分复⽤的⼯作过程的影响。
⼆.课程设计原理时分多址是把时间分割成周期性的帧(Frame)每⼀个帧再分割成若⼲个时隙向基站发送信号,在满⾜定时和同步的条件下,基站可以分别在各时隙中接收到各移动终端的信号⽽不混扰。
同时,基站发向多个移动终端的信号都按顺序安排在预定的时隙中传输,各移动终端只要在指定的时隙内接收,就能在合路的信号中把发给它的信号区分并接收下来。
其原理图如图⼀所⽰.图⼀时分多址系统原理图三.详细设计步骤1.根据电路原理绘出电路原理仿真模型。
对时分多路系统在电路原理实现层次上进⾏建模仿真,其电路原理仿真模型如图⼆所⽰。
图⼆时分复⽤系统的电路原理仿真模型时分复⽤系统的⼀种实现⽅式是使⽤⼀个轮询的多路开关来选择对应时隙下接⼊的信号。
多路开关在系统时钟的控制下⼯作,每个时钟周期对应于⼀个时隙,由于传输数据速率为60样值/s,因此将系统时钟设计为60Hz的矩形脉冲。
通过⼀个循环计数器对时钟脉冲进⾏计数计器周期地输出0,1,2三个值,⽤以控制⼀个三选⼀的多路开关。
计数器使⽤DSP Blokset⼯具箱中的Counter模块来实现。
3路输⼊信号分别接⼊到多路开关的3个信号输⼊端⼝上。
这样多路开关将以0.05s为周期循环地访问3个输⼊端⼝,其输出也就是这3路信号时分复⽤的结果。
本实验⽤⽰波器Scope1分别分别观察系统时钟.多路开关的控制信号时分复⽤的输出结果。
是⽰波器Scope2观察输⼊的3路信号。
接收端的解复⽤功能被封装为⼀个⼦系统,其⼀个⼦输⼊端为信道中传输来的时分复⽤信号,另外⼀个是接收机的系统时钟输⼊端,其输出分别为3路解复⽤的信号,对应于发送端的3路信号。
⼦系统的内部结构如图三所⽰。
TriggeredSubsystem2图三接收机解复⼦系统的内部结构接收机系统时钟必须和发送时钟同步。
时分复用的matlab课程设计

时分复用的matlab课程设计一、课程目标知识目标:1. 掌握时分复用的基本概念和原理,理解其在通信系统中的应用。
2. 学会使用MATLAB软件进行时分复用系统的仿真和性能分析。
3. 了解时分复用与其他复用技术的区别及优缺点。
技能目标:1. 能够运用MATLAB编程实现时分复用信号的生成、传输和解调过程。
2. 学会利用MATLAB分析时分复用系统的误码率、信道容量等性能指标。
3. 培养实际操作和解决问题的能力,提高编程和调试技巧。
情感态度价值观目标:1. 培养学生对通信工程的兴趣,激发他们探索未知、创新实践的精神。
2. 增强学生的团队协作意识,培养良好的沟通与表达能力。
3. 提高学生的信息素养,使他们认识到通信技术在现代社会中的重要作用。
本课程针对高年级本科生或研究生,具有较强的实践性和应用性。
根据学生已具备的基础知识和实际操作能力,课程目标旨在使学生在掌握时分复用理论知识的基础上,运用MATLAB软件进行实际系统的设计与分析,从而提高学生的理论联系实际能力和创新思维能力。
通过本课程的学习,学生将能够独立完成时分复用系统的仿真设计与性能评估,为从事通信工程领域的研究和工作打下坚实基础。
二、教学内容1. 时分复用基本原理:介绍时分复用的概念、原理及其在通信系统中的应用,对应教材第3章。
- 时分复用的定义与分类- 时分复用的实现方法及关键技术- 时分复用在现代通信系统中的应用案例2. MATLAB编程基础:回顾MATLAB软件的基本操作、编程语法和数据结构,为后续仿真打下基础,对应教材第2章。
- MATLAB软件的安装与界面操作- MATLAB编程基础(变量、数据类型、运算符、流程控制等)- MATLAB函数和脚本文件的编写与调试3. 时分复用系统仿真:结合MATLAB软件,设计时分复用系统的仿真实验,对应教材第4章。
- 时分复用信号的生成与解调- 仿真系统的性能分析(误码率、信道容量等)- 参数优化与性能改进4. 实践项目与案例分析:安排实际操作项目,让学生动手实践,并分析典型案例,加深对时分复用技术的理解,对应教材第5章。
基于MATLAB的智能时钟系统设计

基于MATLAB的智能时钟系统设计智能时钟近年来越来越受到人们的关注,因为它不仅仅是一个可以告诉时间的机器,而且还能为我们提供更加便捷,更加智能的服务。
其中,基于MATLAB的智能时钟系统,具有诸多优点和特色,吸引了广大科技爱好者的注意。
本文将从基于MATLAB的系统设计入手,探讨其功能、原理、应用等方面内容。
一、基于MATLAB的智能时钟系统设计的原理基于MATLAB的智能时钟系统,主要由三个部分构成:硬件系统、软件系统、通信系统。
其中,硬件系统主要由时钟模块、音频模块和显示模块组成;软件系统主要由各种算法和界面组成;通信系统主要由蓝牙模块和WIFI模块组成。
这三个部分组成了整个系统的框架,真正实现了智能时钟的各项功能。
(a)硬件系统硬件系统是整个智能时钟系统的核心部分,也是实现各项功能的关键。
在硬件系统中,时钟模块主要通过内部的芯片和电子元件,准确地显示时间,然后与相应的算法进行连接。
音频模块则负责播放各种音频文件,比如音乐、铃声等。
显示模块则负责将各种信息以直观、醒目的方式展示出来。
(b)软件系统软件系统是整个智能时钟系统的灵魂,也是实现各种功能的重要手段。
在软件系统中,各种算法和界面相互连接,共同发挥作用。
比如,通过嵌入式的人脸识别算法,智能时钟可以实现人脸识别解锁功能。
通过各种语音识别算法,智能时钟可以实现语音控制功能。
通过各种显示界面,智能时钟可以展示各种信息,比如室内温度、杀菌功能等等。
(c)通信系统通信系统是整个智能时钟系统的支撑,也是实现各种互动的关键。
在通信系统中,蓝牙模块和WIFI模块居于核心位置,可以实现手机与智能时钟的联动,实现APP远程控制。
同时,通过内部的通信协议,亦可与智能家居、智能锁等其他设备进行通信,实现更加综合、高效的智能服务。
二、基于MATLAB的智能时钟系统设计的功能基于MATLAB的智能时钟系统,具有多项功能,包括7大主要功能和10项其他功能。
下面就来介绍一下这些功能的具体内容。
MATLAB制作漂亮时钟word版本

MATLAB制作漂亮手表 (1)一、问题的提出 (1)二、理论分析 (1)三、实验步骤 (2)四、程序实现 (2)五、实验结果及结果分析 (6)六、程序及其说明 (9)MATLAB制作漂亮手表一、问题的提出随着科技的日新月异,人们的生活节奏变得越来越快,而准确的把我时间也变得越来越重要,几乎人人都会携带可以知道时间的东西,比如手表,手机,怀表,于是在此提出问题,如何通过matlab数字化模拟日常生活中所用的手表的转动?二、理论分析完整的时钟界面有时针,分针,秒针以及刻度等组成,而要用matlab模拟出这些部件,则只需由外至内,一部部的模拟出表面的图形,以及它的运转法则。
三、实验步骤1.了解手表的表盘中由哪些东西构成,将需要通过matlab作出来的部件记下。
2.观察手表的秒针,分针,以及时针的运转规律,构想出通过matlab来实现指针的转动方法。
3.着手编写matlab程序来实现这一过程。
4.完成程序,检验程序的可行性,并完善,使作出来的手表表盘尽可能的美化。
5.完成实验报告。
四、程序实现1.画一个大的圆圈,表示手表的最外层的圈圈,通过plot画圆来实现,x,y用参数方程确定。
2.通过line画直线的方式,画出表盘中得分针和秒针的小的刻度,一共60个。
3.同样的方式,画出时针的大的刻度,一共12个,并在正上方的刻度下表上12.4.运用clock指令读取系统时间,并将其作为初始时间。
5.采用同样的方式分别做出第一、第二、第三个小圆盘,具体程序就不在此给出了。
6.分别做出大表盘以及小表盘中得指针,采用fill指令分别实现时针,分针和秒针。
在此列举大表盘中得时针做出方法。
7.加入以数字形式显示时间的指令,具体实现方法如下显示初始时间:8.设计指针的运转,当秒针每转动一秒时,相应的改变大表盘中秒针,分针,以及时针的位置,以及小圆圈中得指针位置。
数据的改变:大圆圈的指针数据:小圆圈中指针的数据:图像中指针的位置改变:9.当指针转动一圈时,相应的数据应如何变化:10.数字显示也许相应的改变:11.为使秒针的运动符合时间的规律,采用pause指令:五、实验结果及结果分析运行程序,得到结果:六、程序及其说明clear;clf;%%%%% 作出大的表盘%%%%%% set(gcf,'name','钟表','color','white');theta=linspace(0,2*pi,10000);r=10;x=r.*cos(theta);y=r.*sin(theta);shg;plot(x,y);axis([-12 12 -15 12]);axis equal;hold on;axis('off');text(-0.6,9,'\fontsize{20}12');theta0=[];xa=[];xb=[];ya=[];yb=[];for i=1:60 %画出60个刻度theta0(i)=i*pi/30;xa=(r-0.3)*cos(theta0(i));xb=(r-0.3)*sin(theta0(i));ya=r*cos(theta0(i));yb=r*sin(theta0(i));line([xa;ya],[xb;yb]);endfor i=1:12 %画出12个时针的刻度,为了美观,采取个别不画的原则if i==1||i==3||i==5||i==9continueendtheta0(i)=i*pi/6;xa=(r-1.5)*cos(theta0(i));xb=(r-1.5)*sin(theta0(i));ya=(r-0.36)*cos(theta0(i));yb=(r-0.36)*sin(theta0(i));line([xa;ya],[xb;yb],'linewidth',3);endfor i=1:12 %在60个小刻度的基础上对时针的刻度加粗theta0(i)=i*pi/6;xa=(r-0.3)*cos(theta0(i));xb=(r-0.3)*sin(theta0(i));ya=r*cos(theta0(i));yb=r*sin(theta0(i));line([xa;ya],[xb;yb],'linewidth',3);endt=clock;h0=t(4); %设定初始时间m0=t(5);s0=floor(t(6));thetas1=(15-s0)*pi/30; %计算3个小表盘中指针的初始角度thetam1=(15-m0)*pi/30-s0*pi/1800;thetah1=(6-h0)*pi/12-m0*pi/720-s0*pi/43200;%%%%%%% 作第一个小表盘%%%%%%%%%r1_0=6;theta1_0=pi/6;r1=3;theta1=linspace(0,2*pi,10000);x1_0=r1_0*cos(theta1_0);y1_0=r1_0*sin(theta1_0);x1=x1_0+r1.*cos(theta1);y1=y1_0+r1.*sin(theta1);plot(x1,y1);theta_10=[];x1a=[];x1b=[];y1a=[];y1b=[];for i=1:12 %画出第一个小表盘的刻度theta_10(i)=i*pi/6;x1a=x1_0+(r1-0.3)*cos(theta_10(i));x1b=y1_0+(r1-0.3)*sin(theta_10(i));y1a=x1_0+r1*cos(theta_10(i));y1b=y1_0+r1*sin(theta_10(i));line([x1a;y1a],[x1b;y1b],'linewidth',2);endtext(x1_0+r1-0.7,y1_0,'6'); %部分刻度给予数字显示text(x1_0-r1+0.1,y1_0,'18');text(x1_0-0.4,y1_0-r1+0.5,'12');text(x1_0-0.4,y1_0+r1-0.5,'24');h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-pi);%作出第一个小表盘的指针h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah1+pi/2);h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);h1y4=y1_0+0.2*sin(thetah1-pi/2) ;h1=fill([h1x1,h1x2,h1x3,h1x4,h1x1],[h1y1,h1y2,h1y3,h1y4,h1y1],'g' );plot(x1_0,y1_0,'w .','markersize',6);%%%%%%%% 作第二个小表盘%%%%%%%%r2_0=6;theta2_0=5*pi/6;r2=3;theta2=linspace(0,2*pi,10000);x2_0=r2_0*cos(theta2_0);y2_0=r2_0*sin(theta2_0);x2=x2_0+r2.*cos(theta2);y2=y2_0+r2.*sin(theta2);plot(x2,y2);theta_20=[];x2a=[];x2b=[];y2a=[];y2b=[];for i=1:60 %画出第二个小表盘的刻度theta_20(i)=i*pi/30;x2a=x2_0+(r2-0.5)*cos(theta_20(i));x2b=y2_0+(r2-0.5)*sin(theta_20(i));y2a=x2_0+r2*cos(theta_20(i));y2b=y2_0+r2*sin(theta_20(i));line([x2a;y2a],[x2b;y2b],'linewidth',1);endtext(x2_0-0.3,y2_0+r2-0.8,'60'); %部分刻度给予数字显示text(x2_0+1.4,y2_0-1.2,'20');text(x2_0-2,y2_0-1.2,'40');s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi);%作出第二个小表盘的指针s1x2=x2_0+0.2*cos(thetas1+pi/2);s1y2=y1_0+0.2*sin(thetas1+pi/2 );s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2); s1=fill([s1x1,s1x2,s1x3,s1x4,s1x1],[s1y1,s1y2,s1y3,s1y4,s1y1],'g'); plot(x2_0,y2_0,'w .','markersize',7);%%%%%% 添加中间小圆圈,美化表盘%%%%%%for i=1:60 %画出12个时针的刻度,为了美观,采取个别不画的原则if (i>=1&&i<=10)||(i>=20&&i<=30)||(i>=40&&i<=50)||i==60 continueendtheta0(i)=i*pi/30;xa=(r-4.8)*cos(theta0(i));xb=(r-4.8)*sin(theta0(i));ya=(r-4.5)*cos(theta0(i));yb=(r-4.5)*sin(theta0(i));if i==15||i==35||i==55line([xa;ya],[xb;yb],'linewidth',2);continueendline([xa;ya],[xb;yb],'linewidth',1);end%%%%%% 作出第三个小表盘%%%%%%%%r3_0=6;theta3_0=3*pi/2;r3=3;theta3=linspace(0,2*pi,10000);x3_0=r3_0*cos(theta3_0);y3_0=r3_0*sin(theta3_0);x3=x3_0+r3.*cos(theta3);y3=y3_0+r3.*sin(theta3);plot(x3,y3);theta_30=[];x3a=[];x3b=[];y3a=[];y3b=[];for i=1:60 %画出第三个小表盘的刻度theta_30(i)=i*pi/30;x3a=x3_0+(r3-0.2)*cos(theta_30(i));x3b=y3_0+(r3-0.2)*sin(theta_30(i));y3a=x3_0+r3*cos(theta_30(i));y3b=y3_0+r3*sin(theta_30(i));if i==14||i==15||i==16||i==30||i==44||i==45||i==46||i==60 continueendline([x3a;y3a],[x3b;y3b],'linewidth',1);endfor i=1:12 %整分的刻度给予加粗if i==3||i==6||i==9||i==12continueendtheta_30(i)=i*pi/6;x3a=x3_0+(r3-0.5)*cos(theta_30(i));x3b=y3_0+(r3-0.5)*sin(theta_30(i));y3a=x3_0+r3*cos(theta_30(i));y3b=y3_0+r3*sin(theta_30(i));line([x3a;y3a],[x3b;y3b],'linewidth',1);endtext(x3_0-0.3,y3_0+r3-0.3,'60','fontsize',10); %部分刻度给予数字显示text(x3_0-0.3,y3_0-r3+0.3,'30','fontsize',10);text(x3_0+2.4,y3_0,'15','fontsize',8);text(x3_0-2.9,y3_0,'45','fontsize',8);m1x1=x3_0+0.4*cos(thetam1-pi);m1y1=y3_0+0.4*sin(thetam1-pi); %作出第三个小表盘的指针m1x2=x3_0+0.2*cos(thetam1+pi/2);m1y2=y3_0+0.2*sin(thetam1+ pi/2);m1x3=x3_0+1.8*cos(thetam1);m1y3=y3_0+1.8*sin(thetam1);m1x4=x3_0+0.2*cos(thetam1-pi/2);m1y4=y3_0+0.2*sin(thetam1-pi /2);m1=fill([m1x1,m1x2,m1x3,m1x4,m1x1],[m1y1,m1y2,m1y3,m1y4,m 1y1],'g');plot(x3_0,y3_0,'w .','markersize',7);%%%%%% 作出大表盘的指针%%%%%%%thetas=(15-s0)*pi/30;thetam=(15-m0)*pi/30-s0*pi/1800;thetah=(3-h0)*pi/6-m0*pi/360-s0*pi/21600;hx1=(r-7)*cos(thetah+pi/25);hy1=(r-7)*sin(thetah+pi/25);hx2=(r-4)*cos(thetah);hy2=(r-4)*sin(thetah);hx3=(r-7)*cos(thetah-pi/25);hy3=(r-7)*sin(thetah-pi/25);h=fill([0,hx1,hx2,hx3,0],[0,hy1,hy2,hy3,0],'g');%作出大表盘的时针plot(0,0,'g .','markersize',40);mx1=(r-6)*cos(thetam+pi/30);my1=(r-6)*sin(thetam+pi/30);mx2=(r-1.5)*cos(thetam);my2=(r-1.5)*sin(thetam);mx3=(r-6)*cos(thetam-pi/30);my3=(r-6)*sin(thetam-pi/30);m=fill([0,mx1,mx2,mx3,0],[0,my1,my2,my3,0],'r');%作出大表盘的分针plot(0,0,'r .','markersize',30);sx1=(r-8)*cos(thetas+pi);sy1=(r-8)*sin(thetas+pi);sx2=(r-0.3)*cos(thetas);sy2=(r-0.3)*sin(thetas);s=line([sx1;sx2],[sy1;sy2],'color','m','linewidth',3);%作出大表盘的秒针plot(0,0,'m .','markersize',20);i=1;j=1;k=1;time=text(0,-12,[num2str(h0),':',num2str(m0),':',num2str(s0)]);%以数字格式显示初始时间while 1if i>60i=1;endthetas1=thetas1-pi/30; %时间走动时,变化相应的表盘的摆针的角度thetam1=thetam1-pi/1800;thetah1=thetah1-pi/43200;sx1=(r-8)*cos(thetas-i*pi/30+pi);sy1=(r-8)*sin(thetas-i*pi/30+pi);sx2=(r-0.3)*cos(thetas-i*pi/30);sy2=(r-0.3)*sin(thetas-i*pi/30);mx1=(r-6)*cos(thetam-j*pi/1800+pi/30);my1=(r-6)*sin(thetam-j*pi/1800+pi/30);mx2=(r-1.5)*cos(thetam-j*pi/1800);my2=(r-1.5)*sin(thetam-j*pi/1800);mx3=(r-6)*cos(thetam-j*pi/1800-pi/30);my3=(r-6)*sin(thetam-j*pi/1800-pi/30);hx1=(r-7)*cos(thetah-k*pi/21600+pi/25);hy1=(r-7)*sin(thetah-k*pi/21600+pi/25);hx2=(r-4)*cos(thetah-k*pi/21600);hy2=(r-4)*sin(thetah-k*pi/21600);hx3=(r-7)*cos(thetah-k*pi/21600-pi/25);hy3=(r-7)*sin(thetah-k*pi/21600-pi/25);s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi);s1x2=x2_0+0.2*cos(thetas1+pi/2);s1y2=y1_0+0.2*sin(thetas1+pi/2 );s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2); m1x1=x3_0+0.4*cos(thetam1-pi);m1y1=y3_0+0.4*sin(thetam1-pi);m1x2=x3_0+0.2*cos(thetam1+pi/2);m1y2=y3_0+0.2*sin(thetam1+ pi/2);m1x3=x3_0+1.8*cos(thetam1);m1y3=y3_0+1.8*sin(thetam1);m1x4=x3_0+0.2*cos(thetam1-pi/2);m1y4=y3_0+0.2*sin(thetam1-pi /2);h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-pi);h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah1+pi/2 );h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);h1y4=y1_0+0.2*sin(thetah1-pi/2) ;set(s,'xdata',[sx1;sx2],'ydata',[sy1;sy2]); %画出变化后的指针位置set(m,'xdata',[0,mx1,mx2,mx3,0],'ydata',[0,my1,my2,my3,0]);set(h,'xdata',[0,hx1,hx2,hx3,0],'ydata',[0,hy1,hy2,hy3,0]);set(m1,'xdata',[m1x1,m1x2,m1x3,m1x4,m1x1],'ydata',[m1y1,m1y2, m1y3,m1y4,m1y1]);set(s1,'xdata',[s1x1,s1x2,s1x3,s1x4,s1x1],'ydata',[s1y1,s1y2,s1y3, s1y4,s1y1]);set(h1,'xdata',[h1x1,h1x2,h1x3,h1x4,h1x1],'ydata',[h1y1,h1y2,h1y3 ,h1y4,h1y1]);i=i+1;k=k+1;j=j+1;s0=s0+1; %计算当前时间if s0==60s0=0;m0=m0+1;endif m0==60m0=0;h0=h0+1;endif h0==24h0=0;enddelete(time); %删除句柄if s0<10&&m0<10&&h0<10 %重新显示当前时间,判断时间的数字位数,选择是否在数字前面加0time=text(-3,-12,['0',num2str(h0),':0',num2str(m0),':0',num2str(s0)],' fontsize',30,'Fontname','Times New Roman');else if s0<10&&m0<10&&h0>=10time=text(-3,-12,[num2str(h0),':0',num2str(m0),':0',num2str(s0)],'fon tsize',30,'Fontname','Times New Roman');else if s0<10&&m0>=10&&h0<10time=text(-3,-12,['0',num2str(h0),':',num2str(m0),':0',num2str(s0)],'fontsize',30,'Fontname','Times New Roman');else if s0<10&&m0>=10&&h0>=10time=text(-3,-12,[num2str(h0),':',num2str(m0),':0',num2str(s0)],'font size',30,'Fontname','Times New Roman');else if s0>=10&&m0<10&&h0<10time=text(-3,-12,['0',num2str(h0),':0',num2str(m0),':',num2str(s0)],'f ontsize',30,'Fontname','Times New Roman');else if s0>=10&&m0<10&&h0>=10time=text(-3,-12,[num2str(h0),':0',num2str(m0),':',num2str(s0)],'font size',30,'Fontname','Times New Roman');else if s0>=10&&m0>=10&&h0<10time=text(-3,-12,['0',num2str(h0),':',num2str(m0),':',num2str(s0)],'fo ntsize',30,'Fontname','Times New Roman');elsetime=text(-3,-12,[num2str(h0),':',num2str(m0),':',num2str(s0)],'fontsi ze',30,'Fontname','Times New Roman');endendendendendendendpause(0.989);end。
matlab小课程设计

matlab小课程设计一、课程目标知识目标:1. 学生能理解MATLAB软件的基本操作,掌握数据类型、变量、矩阵等基础知识;2. 学生能运用MATLAB进行简单的数学运算、数据可视化及编程;3. 学生了解MATLAB在工程领域的应用,如信号处理、控制系统等。
技能目标:1. 学生能熟练使用MATLAB软件,完成数据输入、输出,进行基本的数据分析;2. 学生能运用MATLAB编写简单的程序,解决实际问题;3. 学生能通过MATLAB实现课程相关实验,提高实践操作能力。
情感态度价值观目标:1. 培养学生对MATLAB编程的兴趣,激发学生主动探索新知识的热情;2. 培养学生团队协作意识,提高沟通与表达能力;3. 培养学生严谨的科学态度,养成良好的编程习惯。
课程性质:本课程为选修课程,旨在帮助学生掌握MATLAB软件的使用,提高编程能力和实践操作能力。
学生特点:学生具有一定的数学基础,对计算机编程有一定兴趣,但编程经验不足。
教学要求:结合学生特点,注重理论与实践相结合,通过案例教学,使学生能够学以致用,提高解决实际问题的能力。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. MATLAB软件概述- 软件安装与界面认识- 基本操作与功能介绍2. MATLAB基础知识- 数据类型与变量- 矩阵与数组操作- 数学运算与函数3. MATLAB编程基础- 控制流(条件语句、循环语句)- 函数编写与调试- 文件操作与数据存储4. MATLAB数据可视化- 二维图形绘制- 三维图形绘制- 图形修饰与动画制作5. MATLAB应用案例分析- 信号处理- 控制系统设计- 优化问题求解6. MATLAB实验操作- 基本操作练习- 程序编写与调试- 综合应用案例实践教学内容安排与进度:第一周:MATLAB软件概述与基本操作第二周:MATLAB基础知识第三周:MATLAB编程基础第四周:MATLAB数据可视化第五周:MATLAB应用案例分析第六周:MATLAB实验操作教材关联:教学内容与教材相关章节紧密联系,涵盖教材中MATLAB基础与应用部分的核心内容,确保学生能够系统地学习并掌握MATLAB相关知识。
matlab课程设计简易时钟gui

matlab课程设计简易时钟gui一、教学目标本节课的教学目标是使学生掌握利用MATLAB GUI设计简易时钟的基本方法,培养学生的编程能力和创新思维。
具体目标如下:1.知识目标:(1)了解MATLAB GUI的基本概念和设计原理;(2)掌握MATLAB GUI编程的基本语法和技巧;(3)熟悉MATLAB GUI中定时器控件的使用。
2.技能目标:(1)能够独立设计并实现一个简易的MATLAB GUI时钟;(2)能够运用MATLAB GUI编程解决实际问题;(3)具备一定的MATLAB编程调试能力。
3.情感态度价值观目标:(1)培养学生对编程事业的热爱和敬业精神;(2)增强学生的团队协作意识和沟通能力;(3)培养学生的创新思维和自主学习能力。
二、教学内容本节课的教学内容主要包括以下几个部分:1.MATLAB GUI简介:介绍MATLAB GUI的概念、特点和基本构成;2.MATLAB GUI设计基础:讲解MATLAB GUI设计的基本原理和语法;3.定时器控件的使用:介绍定时器控件的功能、属性和编程方法;4.简易时钟的设计与实现:引导学生动手实践,设计并实现一个简易的MATLAB GUI时钟;5.案例分析与讨论:分析并点评学生作品,探讨如何优化设计方案。
三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法:1.讲授法:用于讲解MATLAB GUI的基本概念、原理和语法;2.案例分析法:通过分析典型实例,使学生掌握定时器控件的使用方法和技巧;3.实验法:引导学生动手实践,设计并实现简易时钟,培养学生的实际操作能力。
四、教学资源1.教材:选用《MATLAB编程与应用》作为主要教材,为学生提供理论知识的学习依据;2.参考书:推荐《MATLAB GUI设计指南》等参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件和教学视频,为学生提供直观的学习资源;4.实验设备:准备计算机和MATLAB软件,确保学生能够顺利进行实验操作。
MATLAB实际应用课程设计

MATLAB实际应用课程设计一、课程目标知识目标:1. 学生能够理解MATLAB的基本原理和功能,掌握常用的命令和操作。
2. 学生能够运用MATLAB进行数据分析和处理,解决实际问题。
3. 学生能够掌握MATLAB在工程领域的应用,如控制系统、信号处理等方面的基本应用。
技能目标:1. 学生能够熟练使用MATLAB软件,进行数据输入、处理和可视化。
2. 学生能够运用MATLAB编程解决简单的数学问题和工程问题。
3. 学生能够运用MATLAB进行实验数据的模拟和仿真,并进行结果分析。
情感态度价值观目标:1. 学生培养对科学研究的兴趣,增强问题解决的能力和自信心。
2. 学生培养团队合作意识,学会与他人共同探讨和解决问题。
3. 学生认识到MATLAB在实际工程应用中的重要性,增强实践操作的能力。
课程性质:本课程为实践性较强的课程,旨在培养学生运用MATLAB软件解决实际问题的能力。
学生特点:学生具备一定的数学基础和编程能力,对实际应用有较高的兴趣。
教学要求:结合课本内容,注重理论与实践相结合,强调学生的动手操作能力和问题解决能力的培养。
通过具体的案例分析和实际操作,使学生能够将所学知识应用于实际工程问题中。
在教学过程中,注重分解课程目标为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. MATLAB基础操作与命令:介绍MATLAB软件的安装与界面,基本命令与操作,包括变量定义、矩阵运算、数据类型等。
教材章节:第一章 MATLAB基础2. 数据分析与处理:学习使用MATLAB进行数据导入、预处理、可视化等操作,掌握数据的统计分析方法。
教材章节:第二章 数据分析与处理3. MATLAB编程:介绍MATLAB编程基础,如流程控制、函数编写、脚本等,培养学生编程解决问题的能力。
教材章节:第三章 MATLAB编程4. 控制系统仿真:学习使用MATLAB/Simulink进行控制系统的建模、仿真和性能分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB课程设计时
钟
1
2020年4月19日
MATLAB制作时钟
摘要:MATLAB是一款强大的、应用广泛的软件,本文主要利用MATLAB的相关编程来设计实现时钟界面显示效果。
关键字:MATLAB、时钟、界面
引言
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
本文经过MATLAB编程设计时钟显示界面来体会它功能的强大和应用的广泛。
完整的时钟界面有时针、分针、秒针以及刻度等组成,下面详细介绍实现时钟界面的步骤。
1、设置时钟相关参数,比如界面大小、界面颜色,时钟名称等。
h=figure('menubar','none','color','white',...
'position',[200 200 320 360],...
'name','北京时间');
2、显示刻度
这个时钟显示了四个刻度,分别是12、9、6、3,以下语句分别
显示了这四个刻度。
(1)定义一个text控件,显示刻度“12”
b1=uicontrol('parent',h,'style','text','string','12','fontsize',…
12,'position',[156 275 20 20]);
(2)定义一个text控件,显示刻度“9”
b2=uicontrol('parent',h,'style','text','string','9','fontsize',…
12,'position',[60 175 20 20]);
(3)定义一个text控件,显示刻度“6”
b3=uicontrol('parent',h,'style','text','string','6','fontsize',…
12,'position',[156 75 20 20]);
(4)定义一个text控件,显示刻度“3”
b4=uicontrol('parent',h,'style','text','string','3','fontsize',…
12,'position',[260 175 20 20]);
3、设置刻度,分别设置分针的刻度和小时的刻度。
(1)绘制表盘,绘制分钟的刻度
for
n=pi*2:-pi/30:pi/30
a1=0.95*cos(n):0.05*cos(n)/2:cos(n);
b1=0.95*sin(n):0.05*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
1
2020年4月19日
(2)绘制表盘,绘制小时的刻度
for
n=pi*2:-pi/6:pi/30
a1=0.9*cos(n):0.1*cos(n)/2:cos(n);
b1=0.9*sin(n):0.1*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
4、分别绘制秒针、分针、时针在相关时间的位置
(1)计算一秒以后秒针的角度位置
sita1=sita1+w1*pausetime;
(2)计算一秒以后分针的角度位置
sita2=sita2+w2*pausetime;
(3)计算一秒以后时针的角度位置
sita3=sita3+w3*pausetime;
综合以上过程,时钟界面基本已经出炉了,时钟的完整程序如下:
% function 时钟
h=figure('menubar','none',...
'color','white',...
2
2020年4月19日
'position',[200 200 320 360],...
'name','北京时间');
e1=uicontrol('parent',h,... %定义一个edit控件,用于存储日期
'style','edit',... %该控件的类型为edit,能够编辑其内容
'fontsize',12,... %字体大小为12
'position',[110 20 120 30]);
%位置,距离左边110,距离底边20,宽度为120,高度为30
b1=uicontrol('parent',h,... %定义一个text控件,显示刻度“12”
'style','text',...
'string','12',...
'fontsize',12,...
'position',[156 275 20 20]);
b2=uicontrol('parent',h,... %定义一个text控件,显示刻度“9”
'style','text',...
'string','9',...
'fontsize',12,...
'position',[60 175 20 20]);
b3=uicontrol('parent',h,... %定义一个text控件,显示刻度“6”
'style','text',...
'string','6',...
'fontsize',12,...
'position',[156 75 20 20]);
3
2020年4月19日
b4=uicontrol('parent',h,... %定义一个text控件,显示刻度“3”
'style','text',...
'string','3',...
'fontsize',12,...
'position',[260 175 20 20]);
s1=[0:pi/1000:2*pi];
hl=plot(cos(s1),sin(s1),'black','linewidth',1.5); %绘制表盘的外圆
title('时钟');%添加标题
time=datestr(now); %得到当前时间
set(e1,'string',time(1:11));
%当前时间的1:11位是日期,把日期值给el
sita1=pi/2-str2num(time(19:20))*pi/30; %秒针转过的角度
sita2=pi/2-str2num(time(16:17))*pi/30+sita1/60;
%分针转过的角度
sita3=pi/2-str2num(time(13:14))*pi/6+sita2/12;
%时针转过的角度
w1=-pi/30; %设置秒针每秒转过的角度,分针走一个半圆需要30s
w2=-pi/1800; %设置分针每秒转过的角度
w3=-pi/108000; %设置时针每秒转过的角度
pausetime=1;
4
2020年4月19日。