MatLab kürzen/vereinfachen von Transferfunktionen

  1. KruemmelGonzale

    KruemmelGonzale Thread StarterMacUser Mitglied

    Mitglied seit:
    06.09.2005
    Beiträge:
    48
    Zustimmungen:
    0
    Hat jemand eine idee, wie ich in MatLab eine Transferfunktion vereinfachen, bzw. kürzen kann? MatLab macht das ja leider nicht von alleine.
    Meine TF sieht so aus:

    6 s^4 + 21 s^3 + 21 s^2 + 6 s
    -------------------------------------
    4 s^5 + 8 s^4 + 11 s^3 + 16 s^2 + 6 s

    und das diese Funktion noch vereinfacht werden kann, ist ja nun nicht wirklich schwehr zu sehen.
    das kommando simplify geht ja leider nur für die class symbol, also nicht für eine tf.

    Ich bin für jede Idee dankbar
    KruemmelGonzales
     
    KruemmelGonzale, 13.06.2006
  2. pocketcrocodile

    pocketcrocodileMacUser Mitglied

    Mitglied seit:
    28.03.2006
    Beiträge:
    411
    Zustimmungen:
    4
    du willst die funktion in matlab vereinfachen? ich bin mir nicht ganz sicher, ob du das darfst, verlierst Du doch Unstetigkeitsstellen. auch bin ich mir nicht ganz sicher, wie die system control toolbox parst.

    allerdings gäbe es die möglichkeit, ein koefizienten array abzuarbeiten und somit, eine klare vereinfachung zu schaffen. die funktion bekommt also ersteinmal die form:
    a(1)s^(n-1)+...+a(n)s^0 / (b(1)s^(n-1)+...+b(n)s^0). Die a(i), b(i) dürfen dabei auch 0 sein. Ausserdem könnte es eine m-Funktion geben, welche aus dem Resultat Deine Transferfunktionen erzeugt (damit stellst Du sicher, dass die ganzen 0-en keine Rechenzeit verbrauchen.
     
    pocketcrocodile, 13.06.2006
  3. KruemmelGonzale

    KruemmelGonzale Thread StarterMacUser Mitglied

    Mitglied seit:
    06.09.2005
    Beiträge:
    48
    Zustimmungen:
    0
    Die Transferfunktion stellt in diesem Fall nur ein einfaches Beispiel eines geschlossenen (hier eines instabilen) Regelkreises dar. Wenn man dabei kuerzen kann, dann verliert man keine Informationen, dass System verhaelt sich danach noch immer genau so wie zuvor. Soviel zur Theorie.

    Wenn aber nun mal das System etwas komplexer ist, wird es eben etwas schwierig das kuerzen per hand zu machen. Kleinere Exponenten von s vor allem im Nenner verkuerzen dabei aber sehr den analtischen Rechenaufwand fuer das System.
    Ein weg das ganze zu kuerzen waere die Funktion als Symbol in Matlab ein zu geben und den befehl simplify zu verwenden. Anschliessend copy and past um aus dem Ergebnis wieder eine Transferfunktion zu machen. Ich finde selber aber copy and past nicht gerade eine befriedigende Loesung. Ist es moeglich die class sym in double oder tf um zu wandeln? Damit waere auch das Problem copy and past geloesst.

    Der weg, den du vorgeschlagen hast pocketcrocodile fuehrt glaube ich in die gleiche Richtung oder auf das gleiche Problem. Ohne meine Variable (hier also s) weiter zu definieren, muesste ich sie auch um deinen Vorschlag zu verwenden als sym deklarieren, womit ich dann wieder das Problem haette das ich nicht ohne weiteres eine tf daraus machen kann da die class ja nicht stimmt.
     
    KruemmelGonzale, 13.06.2006
  4. pocketcrocodile

    pocketcrocodileMacUser Mitglied

    Mitglied seit:
    28.03.2006
    Beiträge:
    411
    Zustimmungen:
    4
    Langsam finde ich gefallen an diesem, wir fordern ein wiss. Software Protestthread. Wir müssen nur unsere Antwortfrequenzen steigern (oder bots schreiben).

    Nein, mein Weg könnte zu Problemen mit der Control Toolbox führen, Du kannst aber es aber probieren, ob sie mit Nullen arbeiten kann, dann müsste es funktionieren. Deine TF sähe dann so aus:

    a(1) x^5 + a(2) x^4 + ... + a(6) / b(1) x^5 + ...
    mit a =(0,6,21,21,6,0) und b=(4,8,11,16,6,0)
    Du kürzt nun nicht direkt, sondern indem Du die sog. Polynomendivision auf die Vektoren a und b anwendest und zusätzliche Vektoren c,d, ... für evtl. Erweiterungen einführst. Die Frage ist nur, kommt die SCT damit zurecht, dass die koeffizienten nicht fest sind.
     
    pocketcrocodile, 13.06.2006
  5. KruemmelGonzale

    KruemmelGonzale Thread StarterMacUser Mitglied

    Mitglied seit:
    06.09.2005
    Beiträge:
    48
    Zustimmungen:
    0
    Ich glaube nur, das wird auf dauer schwierig sein, die Frequenz noch weiter zu erhoehen. zumal ich auch jetzt dann erst mal eine Woche weg bin.
    Ich werde deinen Vorschlag naechste Woche mal ausprobieren, aber ich glaube da werde ich eben das Problem haben,
    da das Skript eben (vermutlich) damit nicht klar kommen wird. Damit es da nicht muckt muesste ich das wohl als sym deklarieren, womit ich dann auch nicht weiter waere, als mit dem Weg, den ich auch schon mal beschrieben habe.
    Aber ich werde das in jedem Fall naechste Woche mal testen.
     
    KruemmelGonzale, 14.06.2006
  6. pocketcrocodile

    pocketcrocodileMacUser Mitglied

    Mitglied seit:
    28.03.2006
    Beiträge:
    411
    Zustimmungen:
    4
    dem script kannst Du eine menge vorgaukeln. du könntest beispielsweise matlab function handles nutze.
     
    pocketcrocodile, 15.06.2006
  7. KruemmelGonzale

    KruemmelGonzale Thread StarterMacUser Mitglied

    Mitglied seit:
    06.09.2005
    Beiträge:
    48
    Zustimmungen:
    0
    sorry, die letzte Woche hatte ich zu viel zu tun und Sachen nach zu holen, als das ich es vorher ausprobieren konnte.
    Also, ich hab es ausprobiert und es klappt. Ich hab da nur noch ein paar Probleme im Detail, aber die werde ich dann auch noch lösen.
    Dank dir für den Tipp, so klappt es wirklich
    Aber noch eine Frage. Wo, oder wie übergebe ich eine selbst geschriebene Matlab Funktion an die Bibliothek in Matlab, so das ich sie, in egal welchen Verzeichniss ich mich befinde, aufrufen kann?
     
    KruemmelGonzale, 01.07.2006
  8. pocketcrocodile

    pocketcrocodileMacUser Mitglied

    Mitglied seit:
    28.03.2006
    Beiträge:
    411
    Zustimmungen:
    4
    Du kannst in Matlab den Pfad festlegen. Es geht nicht so einfach, wie in der Shell, aber fast. Im "File"Menü findest Du eine Funktion "Set Path", dort sind sämtliche Pfade aufgelistet, welche Matlab zum Ausführen absucht. Ausserdem kannst Du dort eigene Pfade hinzufügen.
     
    pocketcrocodile, 01.07.2006
  9. KruemmelGonzale

    KruemmelGonzale Thread StarterMacUser Mitglied

    Mitglied seit:
    06.09.2005
    Beiträge:
    48
    Zustimmungen:
    0
    :clap:
    super
    Dank dir
     
    KruemmelGonzale, 01.07.2006
Die Seite wird geladen...
Ähnliche Themen - MatLab kürzen vereinfachen
  1. vandread
    Antworten:
    12
    Aufrufe:
    1.416
  2. Dermitri
    Antworten:
    2
    Aufrufe:
    1.042
    Dermitri
    13.07.2013
  3. Olpe
    Antworten:
    3
    Aufrufe:
    3.891
    Kibabalu
    11.01.2012
  4. frid
    Antworten:
    3
    Aufrufe:
    2.122
  5. sebili
    Antworten:
    0
    Aufrufe:
    1.489