WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

embedded m-file, Nullstellen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2009, 10:16     Titel: embedded m-file, Nullstellen
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine Frage bezüglich folgenden Problems:

Innerhalb eines embedded matlab function block die Nullstellen von einem Polynom berechnen. Dazu wollte ich die Matlab-Funktion roots() verwenden. Beim ausführen erhalte ich aber die Fehlermeldung "ROOTS is not supported in Embedded MATLAB.Function".

kann ich das irgendwie umgehen, oder gibt es alternativen zu dieser Funktion?

Vielen Dank für eure Hilfe
Martin


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2009, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

also ich habe jetzt schon mal rausgefunden, dass man fzero() doch verwenden kann, wenn man es eben als extern deklariert.

wie kriege ich jetzt aber mein polynom als funktion hin, so dass fzero() des verarbeiten kann?

habs schon mit inline() versucht, da hab ich aber das problem, dass ich noch eine zusätzliche variable übergeben muss, da der lineare anteil des polynoms davon abhängt...
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2009, 13:30     Titel:
  Antworten mit Zitat      
So, habe jetzt wieder weiterprobiert, und roots() scheint wohl doch zu gehen, wenn man es mit eml.extrinsic einbindet.

Als Ergebnis erhalte ich hier aber einen Vektor (z.B. 3x1).

Wenn ich jetzt nur die 3. Nullstelle haben möchte, z.B.

Code:

eml.extrinsic('roots');

x=[1 1 1 -7];

u=roots(x);

y=u(3,1);
 


dann erhalte ich die Fehlermeldung "Subscripting into an mxArray is not supported."

Ich kann auch nicht einfach sagen

y=u

und dann in simulink mir aus dem Vektor den gewünschten Wert rausholen, da kriege ich nämlich die Fehlermeldung "Function output 'y' cannot be of MATLAB type."

kann mir bitte jemand weiterhelfen?
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 20.08.2009, 14:44     Titel:
  Antworten mit Zitat      
Hallo,

Embedded MATLAB hat ein paar Besonderheiten: bei einer extrinsic function "weiss" der EML Block nicht, was für ein Ergebnis zurückkommt und geht daher vom allgemeinsten Fall aus (mxArray). Ausweg: vorher bescheid geben, was für ein Ergebnis erwartet wird:
Code:

u = zeros(length(x)-1, 1) + 1i; % complexes Array der Länge 3
u = roots(x); % Nullstellen berechnen
y = real(u(3,1)); % den Realteil der 3. NST (auch wenn wir wissen, dass sie reell ist, EML weiss es nicht)
 


Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.