if zeta < 1
omegad = omegan*sqrt(1-zeta^2);
c1 = y0;
c2 = ydot0/(omegan);
p1 = (-zeta*omegan)+(omegan)*sqrt((zeta^2)-1);
p2 = (-zeta*omegan)-(omegan)*sqrt((zeta^2)-1);
x = c1*exp(p1*t)+c2*exp(p2*t);
xdot = p1*c1*exp(p1*t)+p2*c2*exp(p2*t);
set(handles.omegad_output,'String',omegad);
elseif zeta == 1
omegad = omegan*sqrt(1-zeta^2);
c1 = y0;
c2 = ydot0/(omegan);
x = c1*exp(-omegan.*t)+c2.*t*exp(-omegan.*t);
xdot = -omegan*c1*exp(-omegan.*t)-omegan*c2*t*exp(-omegan*t)+t*exp(-omegan*t);
set(handles.omegad_output,'String',omegad);
else
omegad = omegan*sqrt(1-zeta^2);
c1 = y0;
c2 = (ydot0+zeta*omegan*y0)/omegad;
x = exp(-zeta*omegan.*t).*(c1*cos(omegad.*t)+c2*sin(omegad.*t));
A = -zeta*omegan*exp(-zeta*omegan.*t);
B = c1*cos(omegad.*t)+c2*sin(omegad.*t);
C = exp(-zeta*omegan.*t);
D = -c1*omegad*sin(omegad.*t)+c2*omegad*cos(omegad.*t);
xdot = A.*B+C.*D;
set(handles.omegad_output,'String',omegad);
end
% Create Amplitude plot in proper axes
plot(handles.amplitude_axes,t,x)
set(handles.amplitude_axes,'XMinorTick','on')
grid on
% Create Velocity plot in proper axes
plot(handles.velocity_axes,t,xdot)
set(handles.velocity_axes,'XMinorTick','on')
grid on我正在构造一个GUI,这里是plot按钮回调函数。我有上面的代码,当我绘制它时,网格线只出现在振幅图上,而不是速度图上,我如何让两个图的网格线都显示出来。
发布于 2015-12-15 22:28:34
将grid on替换为:
grid (handles.velocity_axes,'on')
grid (handles.amplitude_axes,'on')这是因为grid的命令形式仅适用于当前轴gca。在特定轴上绘制不会使这些轴成为当前轴,因此第二个grid on将再次应用于当前轴,这恰好是振幅图。
https://stackoverflow.com/questions/34291647
复制相似问题