image thumbnail
from Mass-Spring Oscillator by Pedram Parchebafieh
This program solve the equation mX``+bX`+kX=F and plot x(t),v(t) and phase diagram

oscillatortool(varargin)
%This gui solve the equation mX``+bX`+kx=F



function varargout = oscillatortool(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @oscillatortool_OpeningFcn, ...
                   'gui_OutputFcn',  @oscillatortool_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 oscillatortool_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;


guidata(hObject, handles);


function varargout = oscillatortool_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output;
function edit2_Callback(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit3_Callback(hObject, eventdata, handles)

function edit3_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit4_Callback(hObject, eventdata, handles)

function edit4_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit5_Callback(hObject, eventdata, handles)



function edit5_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit6_Callback(hObject, eventdata, handles)

function edit6_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function pushbutton1_Callback(hObject, eventdata, handles)
m=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
k=str2double(get(handles.edit4,'string'));

t0=str2double(get(handles.edit5,'string'));
tf=str2double(get(handles.edit6,'string'));
x0=str2double(get(handles.edit7,'string'));
v0=str2double(get(handles.edit8,'string'));
fun=get(handles.edit9,'string');

ode=@(t,y,m,b,k) [y(2);-b/m*y(2)-k/m*y(1)+eval(fun)];
phasev=(get(handles.checkbox1,'value'));
if phasev==0
   [t,y]= ode45(ode,[t0 tf],[x0,v0],[],m,b,k);

plot(t,y(:,1),t,y(:,2))
grid on
legend('X','V')
else
    op=odeset('OutputFcn','odephas2');
 ode45(ode,[t0 tf],[x0,v0],op,m,b,k);
%plot(t,y(:,1),t,y(:,2))
  legend('X','V')
grid on
end

function edit7_Callback(hObject, eventdata, handles)

function edit7_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function edit8_Callback(hObject, eventdata, handles)

function edit8_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end





function checkbox1_Callback(hObject, eventdata, handles)






function edit9_Callback(hObject, eventdata, handles)

function edit9_CreateFcn(hObject, eventdata, handles)

if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function checkbox2_Callback(hObject, eventdata, handles)


if get(hObject,'value')==1
    set(handles.edit9,'visible','on');
    set(handles.text10,'visible','on');
else
    set(handles.edit9,'visible','off');
    set(handles.text10,'visible','off');
    set(handles.edit9,'string','0');
end




% --------------------------------------------------------------------
function ppp_Callback(hObject, eventdata, handles)



Contact us at files@mathworks.com