How can I define the variable handles for this code. A is a numerical value not text "Undefined variable handles or class "handles.A"

3 ビュー (過去 30 日間)
xo = 0.1; vo = 3;
m = 1; c =10; k = 100
wn = sqrt(k/m); c_c = 2*m*wn; xeta = c/c_c;
t = 2*pi
A=(sqrt(((wn^2)*(xo^2))+(vo^2)))/wn;
set(handles.A,'String','A')
phi=atan((wn*xo)/vo);
set(handles.phi,'String',phi)
xt=A.*sin(wn.*t+phi);
axes(handles.axes2)
ylabel('x(t)')
xlabel ('t')
elif zeta<1
wd=wn*(sqrt(1-(zeta^2)));
set(handles.damping_frequency,'String',wd)
A=sqrt((((vo+zeta*wn*xo)^2)+((xo*wd)^2))/(wd^2));
set(handles.A,'String',A)
phi=atan((xo*wd)/(vo+zeta*wn*xo));
set(handles.phi,'String',phi)
xtud=A.*exp(-zeta*wn.*t).*sin(wd.*t+phi);
axes(handles.axes1)
ylabel('x(t)')
xlabel ('t')

回答 (2 件)

Alan Stevens
Alan Stevens 2020 年 11 月 30 日
Do you want something like this?
xo = 0.1; vo = 3;
m = 1; c =10; k = 100;
wn = sqrt(k/m); c_c = 2*m*wn; zeta = c/c_c;
t = linspace(0,2*pi,100);
if zeta>=1
A=(sqrt(((wn^2)*(xo^2))+(vo^2)))/wn;
phi=atan((wn*xo)/vo);
xt=A.*sin(wn.*t+phi);
plot(t,xt),grid
ylabel('x(t)')
xlabel ('t')
elseif zeta<1
wd=wn*(sqrt(1-(zeta^2)));
A=sqrt((((vo+zeta*wn*xo)^2)+((xo*wd)^2))/(wd^2));
phi=atan((xo*wd)/(vo+zeta*wn*xo));
xtud=A.*exp(-zeta*wn.*t).*sin(wd.*t+phi);
plot(t,xtud),grid
ylabel('x(t)')
xlabel ('t')
end
If you really want to store data in a variable called handles then use
handles.A = A;
and suchlike.

Steven Lord
Steven Lord 2020 年 11 月 30 日
Generally speaking, usually code that involves a struct array named handles is part of a GUI created using GUIDE. If you're trying to extract the code from one of the callbacks of that GUI and use it as a computational routine instead of part of the UI, you can probably just remove those lines from your copy of the callback code.

カテゴリ

Help Center および File ExchangeMigrate GUIDE Apps についてさらに検索

タグ

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by