1. ホーム
  2. matlab

[解決済み] Wolfram AlphaとMATLABでは伝達関数のプロットが異なる

2022-02-14 04:23:58

質問

単純な180°位相シフトオールパスフィルタのデジタルIIRフィルタのフィルタ係数を伝達関数で求めようとしています。 (1+s)/(1-s)

これはWolframが教えてくれたものです。 Wolframのボード線図

で、これがMATLABから得たものです。 MATLABによるボード線図

私のコードは

clc; clear; close all;
z = [-1];                  %zeros
p = [1];                   %poles
k = 1;                     %gain
[num,den] = zp2tf(z,p,k);  %convert zero-pole into numerator denominator
freqz(num,den);            %bode plot

そこで質問ですが、MATLABでWolfram Alphaと同じプロットができるように、伝達関数の極とゼロを正しいフォーマットにどのように変換すればよいのでしょうか?私は何を間違えているのでしょうか?

どのように解決するのですか?

あなたの問題は、概念が混在していることです

freqzz -をベースにした離散周波数変換で作業しているのに対して s -をベースにした連続ラプラス変換です。これらは明らかに同じものではありません。

連続変換のための関数を使うだけです。

z = [-1];                  %zeros
p = [1];                   %poles
k = 1;                     %gain
[num,den] = zp2tf(z,p,k);  %convert zero-pole into numerator denominator
my_filter=tf(num,den);
bode(my_filter);