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

Zugriff auf Base-Workspace aus Embedded Funktion

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2009, 09:54     Titel: Zugriff auf Base-Workspace aus Embedded Funktion
  Antworten mit Zitat      
Hallo zusammen,
ich hänge gerade an einem Problem bei der Umsetzung meines Matlab-Codes in einen Embedded-Funktion Block.
In Matlab ist es ja möglich über eine global-Definition der Variablen den Zugriff auf den base-Workspace zu ermöglichen.
In Embedded Matlab wird dies jedoch nicht unterstützt.
Hat da jemand ne Ahnung wie ich meine Variablen (es handelt sich um Matrizen) auch in Embedded Matlab zugänglich machen kann.
Über den evalin Befehl hab ichs schon versucht, das scheitert allerdings daran dass ich den evalin-Befehl als extrinsic-funktion definieren muss. Dies schließt aber ein, dass auf dem späteren Betriebssystem auch Matlab mitlaufen muss was bei mir leider nicht der Fall ist.
Vielen Dank schonmal


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2009, 13:29     Titel:
  Antworten mit Zitat      
weiß da wirklich niemand was drüber?
 
Affenmann
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 22.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 06:42     Titel:
  Antworten mit Zitat      
Suche benutzten Cool :

http://www.gomatlab.de/daten-von-wo.....mbedded-matlab-t7383.html

hoffe das hilft ?!?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 08:34     Titel:
  Antworten mit Zitat      
Hab ich gemacht Cool
Die dortigen Anmerkungen waren auch sehr gut, jedoch taucht bei mir ein weiteres Problem auf. Dies hab ich auch genau in dem verlinkten Thema aufgegriffen.
Der Befehl
Code:

A = feval( 'evalin', 'base', 'A');

funktioniert fast. Ich hab allerdings die Fehlermeldung
"Embedded MATLAB Interface Error: Size mismatch for MATLAB expression 'ecp_1'. Expected = 1x1 Actual = 10x12." erhalten.
Muss Matlab also noch irgendwie die Vektorgröße sagen, aber daran scheitert es. Ich hab nämlich kein Plan an welcher Stelle ich das tun kann.
Für nen Tip wäre ich sehr dankbar!
 
Affenmann
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 22.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 08:45     Titel:
  Antworten mit Zitat      
Dafür wäre für mich mehr code vll hilfreich!?

Für mich sieht das aus nach einer Fehlermeldung die nach dem
feval-Befehl erst auftritt!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 09:05     Titel:
  Antworten mit Zitat      
Hi Affenmann,
da hast du Recht.
Der Fehler tritt soweit ich das verstehe erst nach dem feval-Befehl auf.
Hier nun ein Auszug des Codes der den Fehler erzeugt
Code:

persistent ecp_1   %ecp_1 ist eine Matrix 10x12 vom Typ single
ecp_1=feval('evalin','base','ecp_1');
Ausgabewert=single(0); %Initialisierung meiner gewünschten Ausgabe
%Hier folgt jetzt eine Berechnung auf welche Zeile und Spalte ich zugreifen muss
ecp_11=single(zeros(sice(10,12));
ecp_11=ecp_1; % diese Zuweisung mache ich, damit Matlab mit der gerade aus dem Workspace exportierten Variablen arbeiten kann. Wenn ich das weglasse bekomm ich den Fehler dass es nicht möglich ist in mxArrays zu indizieren
Ausgabewert=ecp_11(Zeile,Spalte)

Ich hoffe dass du nun mein Problem nachvollziehen kannst, bzw. mich auf nen Fehler im Code hinweisen könntest.
Vielen Dank
 
Affenmann
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 22.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 09:28     Titel:
  Antworten mit Zitat      
Was bezwegt diese Zeile
Code:

ecp_11=single(zeros(sice(10,12));
 

(Die klammersetzung stimmt auch nicht)

Wenn du damit nur ne 10x12 Matrix voller Nuller willst sieht das so aus:
Code:

ecp_11=single(zeros(10,12));
 


oder was bedeutet sice???
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 09:47     Titel:
  Antworten mit Zitat      
Super, das wars!!!!
Die Klammer hatte ich bei dem Code einfach ausversehen gelöscht.
Der Fehler war das sice.
Oh man bin ich doof, aber manchmal sieht man den Wald vor lauter Bäumen nichtmehr.
Wollte wirklich nur ne leere Matrix erstellen. Ohne sice läuft es durch!
Vielen Dank!
 
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.