MatLab kürzen/vereinfachen von Transferfunktionen

Diskutiere mit über: MatLab kürzen/vereinfachen von Transferfunktionen im Andere Forum

  1. KruemmelGonzale

    KruemmelGonzale Thread Starter MacUser Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Registriert seit:
    06.09.2005
    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
     
  2. pocketcrocodile

    pocketcrocodile MacUser Mitglied

    Beiträge:
    411
    Zustimmungen:
    4
    Registriert seit:
    28.03.2006
    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.
     
  3. KruemmelGonzale

    KruemmelGonzale Thread Starter MacUser Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Registriert seit:
    06.09.2005
    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.
     
  4. pocketcrocodile

    pocketcrocodile MacUser Mitglied

    Beiträge:
    411
    Zustimmungen:
    4
    Registriert seit:
    28.03.2006
    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.
     
  5. KruemmelGonzale

    KruemmelGonzale Thread Starter MacUser Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Registriert seit:
    06.09.2005
    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.
     
  6. pocketcrocodile

    pocketcrocodile MacUser Mitglied

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

    KruemmelGonzale Thread Starter MacUser Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Registriert seit:
    06.09.2005
    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?
     
  8. pocketcrocodile

    pocketcrocodile MacUser Mitglied

    Beiträge:
    411
    Zustimmungen:
    4
    Registriert seit:
    28.03.2006
    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.
     
  9. KruemmelGonzale

    KruemmelGonzale Thread Starter MacUser Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Registriert seit:
    06.09.2005
    :clap:
    super
    Dank dir
     
Die Seite wird geladen...
Ähnliche Themen - MatLab kürzen vereinfachen Forum Datum
Matlab R2012b und Xcode 5 (compiler problem!) Andere 21.10.2013
Matlab Studentversion: Für welches System Andere 30.05.2013
MatLab mehr Speicher zu weisen Andere 11.01.2012
txt-file in matlab einlesen Andere 07.01.2010
Matlab sehr langsam Andere 07.01.2009

Diese Seite empfehlen

Benutzerdefinierte Suche