matlab课程设计.docx

上传人:b****9 文档编号:25046921 上传时间:2023-06-04 格式:DOCX 页数:12 大小:111.62KB
下载 相关 举报
matlab课程设计.docx_第1页
第1页 / 共12页
matlab课程设计.docx_第2页
第2页 / 共12页
matlab课程设计.docx_第3页
第3页 / 共12页
matlab课程设计.docx_第4页
第4页 / 共12页
matlab课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

matlab课程设计.docx

《matlab课程设计.docx》由会员分享,可在线阅读,更多相关《matlab课程设计.docx(12页珍藏版)》请在冰豆网上搜索。

matlab课程设计.docx

matlab课程设计

一种“会走路的模拟人“的matlab设计与实现

 

专业:

电子信息科学与技术

班级:

0314412

学号:

031441215

学生姓名:

洪琳子

指导教师:

刘嵩

 

2016年6月18日

一.设计任务

1、自行设计一个MatlabGUI来完成某一项功能任务。

2、熟悉MATLAB的GUI设计流程。

二.设计方案 

利用MATLAB GUI设计实现一个图形用户界面的“一种会走路的模拟人”,要求实现:

(1)通过鼠标控制模拟人的动作,可以实现3D姿态旋转

(2)可以控制模拟人行走的速度、步子大小、跳动等

(3)可以进行模拟人的背景设计,行走参数设计

(4)具有GUI控制界面及文本框控制

三.功能展示

首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,设置背景为白色,以及滑动条设置为Sliders和控制界面controls,组织好各控件大小、颜色,各个标志的名称,如speed,stride,sway等,以及“会走路的模拟人”的整体轮廓,接着设置整个GUI的3D效果,可以通过鼠标进行旋转,功能如下:

通过鼠标点击sliders可以控制滑动条的移动,控制“模拟人”的行走速度,行走步幅,身子摇摆,跳舞,跳动,性别等,另外还附加笑脸功能,整体GUI界面如下:

GUI界面

3D旋转过后

模拟人跳动

附加笑脸功能

性别转化(从走路姿势可以看出该图为女性)

 

四.程序设计

(1)背景颜色、滑动条、字体的相关设置 

1、Uicontrol函数

Uicontrol:

是userinterfacecontrol的缩写(用户界面控制)。

在各计算机平台上,窗口系统都采用控制框和菜单,让用户进行某些操作,或设置选项或属性。

控制框是图形对象,如图标、文本框和滚动条,它和菜单一起使用以建立用户图形界面,称之为窗口系统和计算机窗口管理器。

MATLAB控制框,又称与窗口管理器所用的函数十分相似。

它们是图形对象,可以放置在MATLAB的图形窗中的任何位置并用鼠标激活。

MATLAB的uicontrol包括按钮、滑标、文本框。

sliders(j)=uicontrol('style','slider','units','norm','back',r'','pos',[.16*j-.13.07.14.03],'min',smin,'max',smax,'val',start,.sliderstep',[1/(4*smax),1/(10*smax)],'userdata',txt,'callback',...'set(get(gco,''userd''),''str'',sprintf(''%4.2f'',get(gco,''val'')))');

2、style设置:

  pushbutton'(按钮键)|'togglebutton'(触发器)|'radiobutton'(无线按钮)|'chechbox'(检查框)|'edit'(编辑)

%'text'(文本)|'slider'(滑标)|'frame'(框)|'listbox'(列表)|'popupmenu'(跃上型)这个属性声明了要生成的uicontrol对象类型。

3、'units设置:

{‘pixels'}|'normalized'|'inches'|'centimeters'|'points'这个属性声明了uicontrol对象属性所使用的度量单位

4、%back设置(background):

背景颜色设置

5、%pos设置(position):

6、%min设置:

滑动条最小值

7、%max设置:

滑动条最大值

 

我们设置背景为、滑动条、字体的相关属性,结果如下

(2)设置speed','stride','sway','hop','bounce','gender属性

labels={'speed','stride','sway','hop','bounce','gender'};

(给滑动条标名以及设置最大值最小值))

forj=1:

6

switchj

case1,smin=0;start=1;smax=3;

case6,smin=-3;start=0;smax=3;

otherwise,smin=-2;start=1;smax=2;

end

设置结果如下(我们设置为“行走的模拟人”label,及最大值为12最小值为-12)

 

(3)模拟机器人行走设计、3D旋转姿态设计

whileget(stop,'value')==0

s=cell2mat(get(sliders,'value'));

%cell2mat:

把一个由多个矩阵构成的元胞数组转换成一个矩阵。

意即把元胞数组中的多个矩阵合并成一个矩阵。

c=[sin(omega*t);cos(omega*t);sin(2*omega*t);cos(2*omega*t)];

X=(F+M)/2+s(6)*(F-M)/2;

w=[1;s(2:

5).*c];

X=reshape(X*w,15,3);

H=get(p

(1),'userdata');

e=ones(size(H,1),1);

XH=[H+X(e,:

);X(5,:

)];

set(p

(1),'xdata',XH(:

1),'ydata',XH(:

2),'zdata',XH(:

3))

fork=2:

4

set(p(k),'xdata',X(L{k},1),'ydata',X(L{k},2),'zdata',X(L{k},3));

end

pause(.0001)

 

 

(4)整体程序设计

clf

shg

set(gcf,'doublebuf','on','color','y','name','Walker','numbertitle','off')

set(gca,'pos',get(gca,'pos')+[0.0700])

loadwalkersX=reshape((F(:

1)+M(:

1))/2,15,3);L={[15],[512],[2345678],[9101112131415]};

fork=1:

4

p(k)=line(X(L{k},1),X(L{k},2),X(L{k},3),'marker','o',...

'markersize',10,'linestyle','-','erasemode','background');

end

set(p

(1),'tag','head','userdata',zeros(1,3));

axis([-750750-75075001500])

set(gca,'xtick',[],'ytick',[],'ztick',[])

view(160,10)

labels={'speed','stride','sway','hop','bounce','gender'};

forj=1:

6

switchj

case1,smin=0;start=1;smax=3;

case6,smin=-3;start=0;smax=3;

otherwise,smin=-2;start=1;smax=2;

end

txt=uicontrol('style','text','string',sprintf('%4.2f',start),...

'back','g','units','norm','pos',[.16*j-.10.11.08.03]);

sliders(j)=uicontrol('style','toggle','units','norm','back','r',...

'pos',[.16*j-.13.07.14.03],'min',smin,'max',smax,'val',start,...

'sliderstep',[1/(4*smax),1/(10*smax)],'userdata',txt,'callback',...

'set(get(gco,''userd''),''str'',sprintf(''%4.2f'',get(gco,''val'')))');

uicontrol('style','text','string',labels{j},'back','w',...

'units','norm','pos',[.16*j-.12.02.10.04])

end

cameratoolbar

stop=uicontrol('style','toggle','units','norm','pos',[.91.94.08.05],...

'backgr','w','fontw','bold','string','stop');

uicontrol('style','text','units','norm','pos',[.00.92.25.06],...

'backgr','w','fontangle','italic','string',...

{'Changetheview','withthemouse'})

 

uicontrol('style','radio','units','norm','pos',[.94.90.03.03],...

'userdata',H,'background','white',...

'callback',['p1=findobj(''tag'',''head'');ifget(gco,''val''),'...

'set(p1,''userd'',get(gco,''userd''),''marker'',''none''),'...

'else,set(p1,''userd'',zeros(1,3),''marker'',''o''),end']);

period=151.5751;

omega=2*pi/period;

t=0;

whileget(stop,'value')==0

s=cell2mat(get(sliders,'value'));

t=t+s

(1);

c=[sin(omega*t);cos(omega*t);sin(2*omega*t);cos(2*omega*t)];

X=(F+M)/2+s(6)*(F-M)/2;

w=[1;s(2:

5).*c];

X=reshape(X*w,15,3);

H=get(p

(1),'userdata');

e=ones(size(H,1),1);

XH=[H+X(e,:

);X(5,:

)];

set(p

(1),'xdata',XH(:

1),'ydata',XH(:

2),'zdata',XH(:

3))

fork=2:

4

set(p(k),'xdata',X(L{k},1),'ydata',X(L{k},2),'zdata',X(L{k},3));

end

pause(.0001)

end;

cameratoolbarclose

set(stop,'val',0,'str','close','fontw','bold','callb','close(gcf)')

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1