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

Matlab>Simulink>Matlab

 

Abilus
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 23.08.2010, 16:47     Titel: Matlab>Simulink>Matlab
  Antworten mit Zitat      
ich muss für einen beleg werte für einen bungeesprung in matlab einlesen lassen von simulink berechnen und dann wieder an matlab ausgeben lassen um es 3dimensional zu plotten.

da ich 75 werte für die federkonstante durchgehen muss (1-75) sind nun meine fragen:
-kann ich das ohne eine schleife realisieren?
-kann simulink mit einem durch linspace geschaffenen vektor hierbei verarbeiten?
-hat vielleicht jemand nen lösungsvorschlag?
(ich schreibe absichtlich nicht die ganze aufgabe um den eindruck zu vermeiden ich würde hier auf eine komplettlösung hoffen. ich will das was ich da mache ja schliesslich auch verstehen;)

ich hoffe jemand kann mir helfen ...
danke
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2010, 19:53     Titel:
  Antworten mit Zitat      
Hallo,

ich fürchte, du wirst um eine for-Schleife um einen sim-Befehl nicht herumkommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Abilus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 23.08.2010, 20:34     Titel:
  Antworten mit Zitat      
danke soweit harald. ich habe grad die help funktion von matlab zu "sim"befragt und die "hilfe" war keine. Sad
meine matlab kenntnisse sind schon als recht gering einzustufen und von daher wäre ich über eine einfache erklärung seehr dankbar.
Ich denke die schleife werd ich hinbekommen, aber wie mach ich simulink über matlab klar das dass prog 75 werte für die federkanstante einbezieht?


edit:
k=75;a1=1;a2=1;m=46.84;g=9.91

Belegsim.mdl
 Beschreibung:
simulink teil

Download
 Dateiname:  Belegsim.mdl
 Dateigröße:  27.7 KB
 Heruntergeladen:  425 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Abilus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 23.08.2010, 21:06     Titel:
  Antworten mit Zitat      
... und ich muss gleich noch eine möglicherweise primitive frage dranhängen, was bedeutet "assignin('base','a1',a1)?
Private Nachricht senden Benutzer-Profile anzeigen
 
mmz
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2010, 08:19     Titel:
  Antworten mit Zitat      
mit "assignin" kann man Variablen im Workspace speichern.

der erste Parameter (hier Base) gibt das Workspace an in das du es speicher willst. Der zweite wie die Variable heißen soll, und der dritte welcher Wert in der Variable gespeichert werden soll.


grüße

Michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2010, 09:19     Titel:
  Antworten mit Zitat      
Hallo,

etwa so:
Code:
v = Vektor_mit_allen_Federkonstanten;
for I = 1:length(v)
k = v(I);
y(I) = sim ('Belegsim');
end

Allerdings wirst du einen Out-Port statt des Scope-Blocks brauchen, um die Ergebnisse zurückzubekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Abilus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 24.08.2010, 12:48     Titel:
  Antworten mit Zitat      
vielen dank. habe jetzt das scope gegen "to workspace" getauscht (heisst hier WS) und soweit ich das beurteilen kann einen relativ richtigen matlabcode gebaut... ich bekomme momentan aber noch einen fehler den ich nicht zuordnen kann.

Fehlermeldung:
??? Undefined function or method 'le' for input arguments of type
'struct'.


Code:

m=46.8400

min=0;
a1=1;
a2=1;
g=9.81;

assignin('base','a1',a1);
assignin('base','a2',a2);
assignin('base','m',m);
assignin('base','g',g);

hold on
grid on

for k=1:1:75
   assignin('base','k',k);
   sim('simubeleg');

   if min==0
for i=1:1:size(WS)
   if WS(i,1) <= 0
   min=0;
break
elseif WS(i,1)>0
   min=k;
end
end
end
plot3(linspace(0, size(WS,1)-1,size(WS,1)),zeros(size(WS,1),1)+k,WS);
    end
    hold off
    view(-30, 30);

    xlabel('t [s]');
    ylabel('Funktionen');
    zlabel('s [m]');
    text(0,0,0,{'k_min: ' min}, 'Color','black')
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2010, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

schau dir doch mal an, was die Variable WS im Workspace tatsächlich ist (z.B. setzen eines Haltepunkts). Vermutung: du bekommst t und y oder so und müsstest dann mit WS.t und WS.y arbeiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Abilus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 24.08.2010, 14:47     Titel:
  Antworten mit Zitat      
die rückgabe von simulink (WS)
besteht aus

time (leere tabelle)
signals (values,dimansions,label)
blockname (simubeleg/to workspace)

kann da keinen bezug zu dan achsen herstellen... hab ich was übersehen oder könnte die fehlermeldung noch entwas anderes bedeuten?
Private Nachricht senden Benutzer-Profile anzeigen
 
Abilus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.10
Wohnort: ---
Version: Matlab 7.9.0(R2009b)
     Beitrag Verfasst am: 24.08.2010, 17:58     Titel:
  Antworten mit Zitat      
ich hab den code jetz noch in den editor geschrieben und da bekomme ich die melgung:

Error in ==> simedit at 22
if WS(i,1) <= 0

aber in der zeile und auch in der davor und danach nicht...
ich bin langsam der verzweiflung nahe...Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2010, 18:35     Titel:
  Antworten mit Zitat      
Hallo,

du musst wie gesagt die Daten aus dieser Struktur extrahieren. Nach dem sim-Befehl:
Code:
WS = WS.signals.values;


Meine ursprüngliche Empfehlung war die Verwendung von Out-Blöcken. Da ist es etwas übersichtlicher.

Grüße,
Harald
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 - 2025 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.