在 matlab 上的 for 循环中绘图的问题

Issue with plotting in a for loop on matlab

这是我的 for 循环,它绘制不正确:

for w=1:1:1000
    s(w)=w*1j;
    hX(w)=(alphaX22_1+betaX22_1*s(w))/(s(w)^2+2*d_X1*wn_X1*s(w)+wn_X1^2)+...
    (alphaX22_2+betaX22_2*s(w))/(s(w)^2+2*d_X2*wn_X2*s(w)+wn_X2^2);

    mag_hX(w)=sqrt(real(hX(w))^2+imag(hX(w))^2);
    %arg_hX(w)=atan(imag(hX(w))/real(hX(w)));    
end

figure(2)
plot(w,mag_hX(w),'+')

但我只得到了图上的最后一个值。此外,当我执行 'size s' 或 'size hX' 时,我得到 1 1,但我可以访问 s(350) 和 hX(350)。

为了让您可以 运行 代码,我添加了变量的数值。

% Natural Frequencies and Damping Ratios
wn_X1=354.3; d_X1=0.038;
wn_X2=467.6; d_X2=0.049;

alphaX22_1 = 0.0043
betaX22_1 = -1.2528e-05
alphaX22_2 = 0.0235
betaX22_2 = 4.4012e-06

我会仔细看看 here or here。我相信您需要将您的绘图语句放在 for 循环中。现在你只绘制最后一个值。您应该在循环之前打开图形。