首先,在用户界面编辑窗口添加4个命令按钮(显示是OK的用个PUSH BUTTON),再如下图所示添加5个静态文本框(Static Text)、5个编辑文本框(Edit Text)和一个坐标系(Axes)
其次,按下表设置每个控件的属性值(具体操作是:右击要设置属性的控件——property inspector 命令——在弹出的属性窗口中找到相应的属性名称——将该属性的值修改成自己需要的值)
控件名
属性
属性修改值
PushButton1
FontSize
16
String
螺旋线
Tag
pushbuttonLxx
PushButton2
FontSize
16
String
内摆线
Tag
pushbuttonNBX
PushButton3
FontSize
16
String
圆旋转成圆环
Tag
pushbuttonCtoC
PushButton4
FontSize
16
String
退出
Tag
pushbuttonExit
Static Text1
String
大圆半径
Static Text2
String
小圆半径
Static Text3
String
修正值
Static Text4
String
圆半径
Static Text5
String
离转轴的距离
Edit Text1
String
空或设置成一个适定值,如10
Tag
editBCR
Edit Text2
String
空或设置成一个适定值,如2
Tag
editSCR
Edit Text3
String
空或设置成一个适定值,如1
Tag
editXZZ
Edit Text4
String
空或设置成一个适定值,如4
Tag
editCR
Edit Text5
String
空或设置成一个适定值,如10
Tag
editBExit
注:上面控件名称的编号,比如1,2之类,在界面上是没有的,只是我按照从上到下的次序,为方便叙述而编写的。
最后,添加程序(在添加程序前,最好先将文件保存一下,比如以Exp8.m为文件名保存),添加程序的常用方法是:单击菜单命令view——M-file Editor,此时,得到下面的程序:
function varargout = Exp8(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Exp8_OpeningFcn, ...
'gui_OutputFcn', @Exp8_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
%上面的是系统初始化代码,绝对不要去修改它们。
function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
%上面的代码,告诉我们,一般的用户界面的自己设置的初始化状态应添加在这个函数内。
function varargout = Exp8_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%上面的函数返回的量直接到命令窗口。
function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函数是点击螺旋线按钮时,执行的代码,即可以在此处添加有关螺旋线的程序代码。
function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函数是点击内摆线按钮时,执行的代码,即可以在此处添加有关内摆线的程序代码。
% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函数是点击退出按钮时,执行的代码,即可以在此处添加退出时的程序代码。
function editBCR_Callback(hObject, eventdata, handles)
%上面的函数是 editBCR这个编辑文本按钮回调时,执行的代码。
BigCircleRadial=str2double(get(hObject,'String'));
function editBCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editBCR的属性值。
function editSCR_Callback(hObject, eventdata, handles)
%上面的函数是editSCR这个编辑文本按钮回调时,执行的代码。
function editSCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editSCR的属性值。
function editXZZ_Callback(hObject, eventdata, handles)
%上面的函数是editXZZ这个编辑文本按钮回调时,执行的代码。
function editXZZ_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editXZZ的属性值。
function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函数是点击圆旋转成圆环按钮时,执行的代码,即可以在此处添加圆旋转成圆环时的程序代码。
function editCR_Callback(hObject, eventdata, handles)
%上面的函数是editCR这个编辑文本按钮回调时,执行的代码。
function editCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editCR的属性值。
function editDist_Callback(hObject, eventdata, handles)
function editDist_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editDist的属性值。
下面真正添加自己的程序,最后成的程序如下:自己添加的程序用红色表示。
function varargout = Exp8(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Exp8_OpeningFcn, ...
'gui_OutputFcn', @Exp8_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
%上面的是系统初始化代码,绝对不要去修改它们。
function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
%这里选择了一个图片文件,作为初始画面,具体的图片可以选择自己喜欢的。
map1=imread('Water lilies.jpg');
image(map1)
%上面的代码,告诉我们,一般的用户界面的自己设置的初始化状态应添加在这个函数内。
function varargout = Exp8_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%上面的函数返回的量直接到命令窗口。
function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函数是点击螺旋线按钮时,执行的代码,即可以在此处添加有关螺旋线的程序代码。
axes(handles.axes1)
cla
v=2;
alf=pi/6;
omg=pi/5;
t=0:0.01:100;
x=v*sin(alf).*cos(omg*t).*t;
y=v*sin(alf).*sin(omg*t).*t;
z=v*cos(alf).*t;
%plot3(x,y,z)
axis([-100 100 -100 100 0 160])
grid on
axis equal on
comet3(x,y,z)
%上面的程序是“一质点,沿着已知圆锥面的一条直母线自圆锥的顶点起,作等速直线运动,另一方面这一条母线在圆锥面上,过圆锥的顶点绕圆锥的轴(旋转轴)作等速的转动,这时质点在圆锥面上的轨迹”的动态形成过程。
function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函数是点击内摆线按钮时,执行的代码,即可以在此处添加有关内摆线的程序代码。
axes(handles.axes1)
cla
a=str2double(get(handles.editBCR,'String'));
b=str2double(get(handles.editSCR,'String'));
k=str2double(get(handles.editXZZ,'String'));
axis([-a-2 a+2 -a-2 a+2 0 a+2])
line([-a-2,a+2],[0,0]);
hold on
line([0,0],[-a-2,a+2
u=0:pi/30:2*pi;
x=a*cos(u);
y=a*sin(u);
plot(x,y)
x=b*cos(u)+a-b;
y=b*sin(u);
plot(x,y)
axis equal on
grid on
theta=0:pi/1800:k*a*pi;
x=(a-b)*cos(b/a*theta)+b*cos((a-b)/a*theta);
y=(a-b)*sin(b/a*theta)-b*sin((a-b)/a*theta);
comet(x,y)
%上面的程序是内摆线的动态的形成过程
% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函数是点击退出按钮时,执行的代码,即可以在此处添加退出时的程序代码。
ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!');
switch ss
case '是的,我要退出!'
delete(handles.figure1);
end
%上面的程序是退出程序时信息窗口
function editBCR_Callback(hObject, eventdata, handles)
%上面的函数是 editBCR这个编辑文本按钮回调时,执行的代码。
function editBCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editBCR的属性值。
function editSCR_Callback(hObject, eventdata, handles)
%上面的函数是editSCR这个编辑文本按钮回调时,执行的代码。
function editSCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editSCR的属性值。
function editXZZ_Callback(hObject, eventdata, handles)
%上面的函数是editXZZ这个编辑文本按钮回调时,执行的代码。
function editXZZ_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editXZZ的属性值。
function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函数是点击圆旋转成圆环按钮时,执行的代码,即可以在此处添加圆旋转成圆环时的程序代码。
axes(handles.axes1)
cla
%a=4;
%b=10;
a=str2double(get(handles.editCR,'String'));
b=str2double(get(handles.editDist,'String'));
u=0:pi/30:2*pi;
y=a.*cos(u)+b;
z=a.*sin(u);
n=length(u);
x=0*ones(1,n);
if a
axis([-b-2 b+2 -b-2 b+2 -a-2 a+2])
else
axis([-a-2 a+2 -a-2 a+2 -b-2 b+2])
end
plot3(x,y,z)
pause(1)
for t=0:pi/60:2*pi
x=y.*sin(t);
y1=y.*cos(t);
plot3(x,y1,z)
pause(0.1)
grid on
hold on
%axis equal on
%view([-20,0])
end
%上面的程序是圆旋转成圆环的动态的形成过程
function editCR_Callback(hObject, eventdata, handles)
%上面的函数是editCR这个编辑文本按钮回调时,执行的代码。
function editCR_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editCR的属性值。
function editDist_Callback(hObject, eventdata, handles)
function editDist_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%上面的函数用来在程序中设置editDist的属性值。