logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zera i bieguny - niedostateczna precyzja w Matlabie?

sieniaw 16 Lut 2005 11:46 4403 3
REKLAMA
  • #1 1234053
    sieniaw
    Poziom 12  
    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
  • REKLAMA
  • #2 1235334
    h-doc
    Poziom 27  
    nie wiem, jak jest w Matlabie, ale w MathCadzie można było ustawić precyzję wykonywanych obliczeń.
    Poza tym przy projektowaniu filtrów analogowych to faktycznie jest problem. Im wyższy rząd tym większa wymagan precyzja obliczeń (mniej więcej wygląda to tak, że liczba pozycji po przecinku powinna być większa niż rząd filtru).
  • REKLAMA
  • #3 1248762
    alfrednovi
    Poziom 19  
    Cześć!
    A używasz zmiennych typu double czy single? Jeśli tych drugich to konwersja na double powinna pomóc.

    Pozdrawiam!
    Alfrednovi
  • #4 1260633
    sieniaw
    Poziom 12  
    Używam zmiennych double - a to chyba maksymalna precyzja jaką można uzyskac w matlabie :(

    Odnośnie mathcada, czy ktoś może mi napisać w jaki sposób zapisać wielomian jako transmitancję filtru cyfrowego? Bedę jeszcze próbował dzsia nauczyć się mathcada -ale nie wiem jakie będą efekty. Mam wektor, w którym kolejne elementy oznaczją wielkości przy kolenych potęgach wielomianu. Wpisywanie ręcznie wielomianu nie bardzo mnie ratuje :(
REKLAMA