w=0:0.02:5; h=impulse(num,den,t); plot(w,angle(H)); 然后显示数组索引必须为正整数或逻辑值。 出错 Untitled5 (第 21 行) plot(w1,angle(H));
时间: 2023-11-19 19:05:00 浏览: 141
这个错误提示是因为在plot函数中,变量w1未被定义。您在代码中定义了变量w,应该将变量w1替换为w。
因此,正确的代码应该是:
```
w = 0:0.02:5;
H = impulse(num, den, t);
plot(w, angle(H));
```
请注意,如果变量num、den和t未被定义,代码也会出现错误。请确保这些变量已经被正确定义和赋值。
相关问题
w=0:0.02:5; h=impulse(num,den,t); plot(w,angle(H)); 然后显示数组索引必须为正整数或逻辑值。 出错 Untitled5 (第 21 行) plot(w,angle(H));
在这段代码中,变量h被定义为impulse函数的输出,而变量H则未定义。因此,您需要将变量h替换为H,即:
```
w = 0:0.02:5;
H = impulse(num, den, t);
plot(w, angle(H));
```
请注意,如果变量num、den和t未被定义或被定义但不正确,代码也会出现错误。在运行代码之前,请确保这些变量已经被正确定义并赋值。
数组索引必须为正整数或逻辑值。 出错 Untitled5 (第 21 行) plot(w,angle(H));
这个错误提示通常表示在plot函数中,输入的第二个参数是错误的类型。
在您的代码中,变量H是通过impulse函数计算得到的,它是一个时域下的冲击响应。如果要绘制它的相位谱,应该先将它转换为频域下的传递函数,然后再计算相位谱。
下面是一个示例代码,可以用来绘制传递函数的幅频和相频特性:
```
w = 0:0.02:5;
s = tf('s');
H = (num/den)*exp(-s*t);
mag = abs(H);
phase = angle(H);
subplot(2,1,1);
semilogx(w, 20*log10(mag));
xlabel('Frequency (rad/s)');
ylabel('Magnitude (dB)');
title('Bode Plot');
grid on;
subplot(2,1,2);
semilogx(w, phase);
xlabel('Frequency (rad/s)');
ylabel('Phase (deg)');
grid on;
```
在这个代码中,我们首先使用tf函数创建了一个连续时间域的传递函数s,然后将num和den作为其参数,得到一个传递函数H。接着我们通过exp函数将其转换为时域下的冲击响应。
最后,我们使用semilogx函数分别绘制了传递函数的幅频和相频特性。请注意,我们在幅频特性的绘制中使用了20*log10函数来将幅值转换为分贝单位。
阅读全文