Mam problem z wydawałoby się prostym zadaniem.
A mianowicie mam transmitancję filtru np. 128 rzędu. Wyliczam zera i bieguny, czyli miejsca zerowe mianownika i licznika. Chciałbym nieco pomieszać w nich, ale tą sprawę zostawmy na później. Następnie składam je spowrotem w transmitancję i wychodzą mi bzdury. Wydaje mi się, że to wina niewystarczającej precyzji obliczeń i błędu zaokrąglenia w matlabie.
Sposób moich obliczeń
H(z)=B/A -128 współczynników
q=roots(B);
B1=poly(q1);
Wg. powienienem dostać to co włożyłem, czyli zera dokładnie w tych samych miejscach jak w pierwotnej transmitancji, tak nie jest.
i korzystając z gortowych funkcji
[q,p,k]=tf2zpk(B,A);
[B1,A1]=zp2tf(q,p,k);
Wyniki są dokładnie takie same.
Mam prośbe, czy ktoś mógłby mi wskazać narzędzie, w którym niby proste operacje mnożenia da się wykonać, lub ew. co zrobić, aby matlab liczył to poprawnie. Może moje rozumowanie jest nieprawidłowe?
pozdrawiam sieniaw
A mianowicie mam transmitancję filtru np. 128 rzędu. Wyliczam zera i bieguny, czyli miejsca zerowe mianownika i licznika. Chciałbym nieco pomieszać w nich, ale tą sprawę zostawmy na później. Następnie składam je spowrotem w transmitancję i wychodzą mi bzdury. Wydaje mi się, że to wina niewystarczającej precyzji obliczeń i błędu zaokrąglenia w matlabie.
Sposób moich obliczeń
H(z)=B/A -128 współczynników
q=roots(B);
B1=poly(q1);
Wg. powienienem dostać to co włożyłem, czyli zera dokładnie w tych samych miejscach jak w pierwotnej transmitancji, tak nie jest.
i korzystając z gortowych funkcji
[q,p,k]=tf2zpk(B,A);
[B1,A1]=zp2tf(q,p,k);
Wyniki są dokładnie takie same.
Mam prośbe, czy ktoś mógłby mi wskazać narzędzie, w którym niby proste operacje mnożenia da się wykonać, lub ew. co zrobić, aby matlab liczył to poprawnie. Może moje rozumowanie jest nieprawidłowe?
pozdrawiam sieniaw