如何在Matlab中绘制此公式的传递函数?

时间:2016-12-30 05:51:33

标签: matlab plot

我真的不明白如何为任意公式绘制传递函数。 Matlab文档说要获得Bode图,我需要创建一个传递函数。他们举例说明:tf([])但这只给出了三阶。

如何绘制我特定公式的波特图?

是:

y = 1./((Z0./Zl).^2。* j。 sin(B。 d)/ 2 + exp(j。* B。* d)。* (1 + Z0 ./ Zl))

其中Z1,d和B是每个频率的值的向量。这是我完整的Matlab脚本。

numElem = 200;
w = linspace(2*pi*10^8,2*pi*10^10,numElem);
wRes = 2*pi*10^9;

%%Insert wRes (resonant frequency)
for n = 1:numElem
    if w(n) > wRes 
        w = [w(1:n - 1), wRes, w(n:numElem)];
        resLocation = n;
        break
    end
end

freq = w ./ (2*pi);
lambda =  299792458 ./ freq;

%Beta
B = pi/2 .* w ./wRes;
B(resLocation) = pi/2;

%Distance
d = lambda(resLocation) ./ 4;

Z0 = 50; %Ohms
C = 10^(-12);
L = 1/(wRes^2*C);
Zl = 1 ./ (j .* w .* C + 1 ./ (j .* w .* L));

y = 1./((Z0./Zl).^2 .* j.*sin(B .* d)/2 + exp(j .* B .* d).*(1 + Z0 ./ Zl))

1 个答案:

答案 0 :(得分:0)

我之前遇到过这个问题,而且非常简单。 你的幅度是20log(| data |),你的阶段是arctan(真实(数据)/ imag(数据))所以你可以使用下面的公式:

Amplitude=20*log10(abs(y));
phase = angle(y)*180/pi;
subplot(211)
semilogx(freq,Amplitude)
subplot(212)
semilogx(frq,phase)

结果是: enter image description here