Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中的步进图函数_Matlab_Plot - Fatal编程技术网

matlab中的步进图函数

matlab中的步进图函数,matlab,plot,Matlab,Plot,我试图在MATLAB中绘制阶跃响应,但什么也看不出来,我已经为以下时域微分方程的3个不同k值绘制了Bode图: d^2y(t)/dt + (v/m)dy(t)/dt + (k/m)y(t) = (k/m)x(t) 在频率方面,方程式为: H(jw)=((k/m))/((〖jw)〗^2+(v/m)(jw)+(k/m) )=k/(m(〖jw)〗^2+v(jw)+k) k的值分别为1,0.09,4 v的求解方程如下所示: v=sqrt(2)*sqrt(k*m) where m=1 我现在必须为步

我试图在MATLAB中绘制阶跃响应,但什么也看不出来,我已经为以下时域微分方程的3个不同
k
值绘制了Bode图:

d^2y(t)/dt + (v/m)dy(t)/dt + (k/m)y(t) = (k/m)x(t)
在频率方面,方程式为:

H(jw)=((k/m))/((〖jw)〗^2+(v/m)(jw)+(k/m) )=k/(m(〖jw)〗^2+v(jw)+k)
k的值分别为1,0.09,4

v的求解方程如下所示:

v=sqrt(2)*sqrt(k*m) where m=1
我现在必须为步骤做同样的事情,但我试图不起作用。有人能提供一些建议吗

以下是Bode图和尝试但失败的步骤图的代码:

w=logspace(-2,2,100);

%Creating different vectors based upon K value
%then calculating the frequencey response based upon
%these values

b1=[1];
a1=[1 2^(.5) 1];
H1=freqs(b1,a1,w);
b2=[.09];
a2=[1 (2^.5)*(.09^.5) .09];
H2=freqs(b2,a2,w);
b3=[4];  
a3=[1 2*(2^.5) 4];
H3=freqs(b3,a3,w);

%Ploting frequency response on top plot
%with loglog scale

subplot(2,1,1)
loglog(H1,w,'r')
axis([.04 10 .01 10])
hold on
loglog(H2,w,'g')
loglog(H3,w,'c')
xlabel('Omega')
ylabel('Frequency Response')
title('Bode plot with various K values')
legend('H1, K=1','H2, K=.09','H3, K=4')
hold off

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%creating transfer function, how the functions
%respond in time

h1=tf(b1,a1);
h2=tf(b2,a2);
h3=tf(b3,a3);

t=linspace(0,30);
[y1,t1]=step(h1,t);
[y2,t2]=step(h2,t);
[y3,t3]=step(h3,t);

%Ploting step response on bottom plot
%with respect to time

subplot(2,1,2)
plot(t1,abs(y1),'r')
hold on
plot(t2,abs(y2),'g')
plot(t3,abs(y3),'c')
legend('h1, K=1','h2, K=.09','h3, K=4')
xlabel('time(s)')
ylabel('Amplitude')
title('Step response with various K values')

您是否尝试过使用
步骤
功能?您已经在上面的代码中为每个TF定义了系数<代码>步骤接收TF对象,并在时域中为您提供步骤响应

首先,获取这些系数并创建
TF
对象。之后,运行步骤响应。使用上面提供的代码,执行以下操作:

b=[1];
a=[1 2^(.5) 1];
% I would personally do: a = [1 sqrt(2) 1];
H1=tf(b, a); % Transfer Function #1
b=[.09];
a=[1 (2^.5)*(.09^.5) .09];
% I would personally do a = [1 sqrt(2*0.09) 0.09];
H2=tf(b, a); % Transfer Function #2
b=[4];  
a=[1 2*(2^.5) 4];
% I would personally do a = [1 2*sqrt(2) 4];
H3=tf(b, a); % Transfer Function #3

% Plot the step responses for all three
% Going from 0 to 5 seconds in intervals of 0.01
[y1,t1] = step(H1, 0:0.01:5);
[y2,t2] = step(H2, 0:0.01:5);
[y3,t3] = step(H3, 0:0.01:5);

% Plot the responses
plot(t1, y1, t1, y2, t3, y3)
legend('H1(s)', 'H2(s)', 'H3(s)');
xlabel('Time (s)');
ylabel('Amplitude');
这是我得到的数字:


仅供参考,将任何东西通电到一半与
sqrt()
相同。你应该考虑使用它来减少代码的混淆。从您的代码判断,似乎您正在尝试修改您尝试生成的每个二阶欠阻尼模型中的自然振荡频率,同时保持阻尼比不变。当您增加
k
时,系统应变得更快,稳态值也应变得更大,更接近1-确保您补偿直流增益。(我以前是自动控制系统的讲师)。

您需要进一步的帮助吗?如果没有,这对你有帮助,请考虑接受我的回答。如果没有,请就您需要的任何进一步帮助写一条评论。我想我还有一个问题,但与波特情节有关。我将在我的问题中更新代码,但是我的朋友正在尝试用python进行同样的绘图,他的bode绘图看起来很正确,而我的绘图却不正确。再一次,我会在上面的问题主体中添加更多的信息。这是我第一个问题的继续。不管我怎么想,我所需要做的就是切换我的坐标轴。