Die Größen für Drehzahl und Last kommen aus jeweils einem Eingangsvektor. Das hat bis jetzt wie geplant funktioniert.
Als nächsten Schritt möchte ich jede dieser Variablen durch eine andere teilen, um so auf eine weitere Variable zu kommen. Ich dachte mir, das einfachste wäre dies in einer for-Schleife zu machen, derren Schleifenanzahl sich an der Größe der Eingangsvektoren orientiert. Denn genau so viele Ergebnisse sollen da ja immer rauskommen
Nun zu meinem Problem:
Ich scheitere gerade daran, die Variablen im Workspace anhand der Drehzahlinfo und Lastinfo anzusprechen.
So ähnlich stelle ich mir das in etwa vor:
Die Bezeichnungen der Ergebnisse sollen natürlich auch die entsprechende Drehzahl- und Lastinfo haben.
Ich hoffe mein Problem halbwegs verständlich erläutert zu haben und hoffe jemand hat hierfür eine Lösung. Unterm Strich ist denke ich mein Problem, die Variablen im WS über Indexierung anzusprechen und weiterzuverarbeiten. Vorab vielen Dank!
Punkt 2: Könnte es sein, dass es hier um Interpolation geht?
Andreas
TMIMLER
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2013, 08:43
Titel:
Hallo Andreas,
das die Syntax nicht funktioniert ist mir klar, deswegen suche ich ja hier nach Hilfe.
Mein Problem ist, die vorher erzeugten Variablen allgemein mit Hilfe der Inhalte der Eingangsvektoren (also Last und Drehzahl) anzusprechen, um diese dann weiterzuverarbeiten. Um Interpolation geht es hier meiner Meinung nach nicht.
wenn du die Variablen selbst erstellen kannst, warum nutzt du nicht lieber Cell Arrays oder Structs mit dynamic field names? Ich nehme an du hast die Variablen mit eval/assign erstellt?
Daran wo du gerade hängst sind genau die Dinge wovor bei eval/assign immer gewarnt wird (zumindestens hier im Forum). Falls du das wirklich so fortführen willst, bleibt dir wohl nur wieder ein kompliziertes eval-Konstrukt, das wieder eval-Konstrukte nach sich zieht und am Ende kaum mehr verstehbar ist.
Viele Grüße
Chris
TMIMLER
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2013, 10:14
Titel:
Hallo BlackDread,
du hast es erkannt. Ich habe die Variablen mit assignin erzeugt.
Ich hatte gerade auch den Gedankengang, dass ich vll lieber die Ergebnisse direkt in der Schleife stückchenweise in ein Structurearray schreibe. Ich denke, dass ist der bessere Weg, nur macht es das für mich an der Stelle nicht gerade einfacher, da ich mir nicht sicher bin, wie das im Detail umgesetzt wird...Hierzu muss ich mich noch mehr in das Thema Structure und Dynamic Field Names einlesen.
Egal ob ich das jetzt über Cell oder Struct-Arrays lösen werde, brauche ich ja für die Indexierung den jeweiligen Schleifendurchlauf der doppel For-Schleife. Hab jetzt schon ausführlich gegoogelt, aber leider finde ich keine Lösung für das scheinbar einfache Problem. Habt ihr eine Idee?
Hi nochmal, so richtig wird mir nicht klar was du machen möchtest. Erklär bitte nochmal:
Was ist dein Eingang, was willst du berechnen und was willst du als Ergebnis?
Am besten (lauffähiger) code als minimalbeispiel.
Gruß, Kascho
TMIMLER
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2013, 11:15
Titel:
Okay, ich versuchs nochmal. Ich erzeuge mir eine Latte an Signalen über folgende Doppel-for-Schleife. Das funktioniert auch soweit:
for x = 1 : (length(sch_drehzahl)-1); % Länge der Eingangsvektoren -1, da unten die Drehzahl/- lastfenster abgefragt werden for y = 1 : (length(sch_last)-1); % Länge der Eingangsvektoren -1, da unten die Drehzahl/- lastfenster abgefragt werden
Indice = []; % "Resetierung" der Variable Indice
Indice = find(bdemod == 40 & nmot_w >= sch_drehzahl(1,x) & nmot_w < sch_drehzahl(1,x+1)...
& miist_w >= sch_last(1,y) & miist_w < sch_last(1,y+1)); % Abfrage der Größen, bei Drehzahl und Last werden die Vektoreninhalt abgefragt und % für die Schleife variablen dargestellt
SCH_Vektor= []; % "Resetierung" des Vektors
SCH_Vektor(Indice) = 1; % Erstellung des Vektors mit einer 1 an der zutreffenden Indexposition assignin('base',['B_SCH_' num2str(sch_drehzahl(1,x)) 'x' num2str(sch_drehzahl(1,x+1)) '_' ... num2str(sch_last(1,y)) 'x' num2str(sch_last(1,y+1))],SCH_Vektor); % Variabler Vektorname inkl. der Last- und Drehzahlinfo für die Schleife
SCH_Vektor_fertig=(sum(SCH_Vektor)*0.1); % Aufsummierung der 1er zu einer Gesamtzeit assignin('base',['B_SCH_fertig_' num2str(sch_drehzahl(1,x)) 'x' num2str(sch_drehzahl(1,x+1)) '_' ... num2str(sch_last(1,y)) 'x' num2str(sch_last(1,y+1))], ...
SCH_Vektor_fertig); % Variabler Name inkl. der Last- und Drehzahlinfo für die Schleife
Um jetzt das Ergebnis jedes Schleifendurchlaufs in ein Cell oder Scruct-Array zu schreiben, benötige ich ja zur Indexierung die Anzahl des aktuellen Schleifendurchlaufs.
was willst Du überhaupt mit dem SCH_Vektor anfangen?
Du verwendest »find« um aus einem logischen Vektor Indizes zu finde um danach wieder einen pseudo-logischen Vektor zu erzeugen???
Das "Resetten" von Vektoren ist seltsam, und im ersten Fall auch überflüssig. Deine ganzen Kommentare sind nutzlos, da sie nur das kommentieren, was in der Zeile sowieso schon steht.
»x« und »y« als Schleifenvariablen sind ungewöhlich, da der Leser reele Zahlen damit verbindet und keine Indizes. Nimm a,b oder n,m.
Du hast eine Größe, die von zwei Parametern abhängt, dann mach daraus eine Matrix. Spalten. und Zeilennummer der Matrix sind dann je mit Drehzahl bzw. Last verknüpft. Diese Information brauchst Du Dir also nicht zusätzlich merken.
vielen Dank für deine Hilfe! Du hast mein Problem erfasst und mir direkt einen super Verbesserungsvorschlag geben, den ich so 1:1 anwenden werde!
Gruß
Einstellungen und Berechtigungen
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
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.