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

Simulationsdaten plotten

 

kwd46056
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 16.11.2017, 19:27     Titel: Simulationsdaten plotten
  Antworten mit Zitat      
Guten Abend Gemeinde,

ich melde mich hoffentlich zum letzten mal mit meinem Programm. Meiner Meinung nach fehlt nur noch eine Kleinigkeit damit das Programm so laufen tut, wie es soll.
Ich will meine Ergebnisse aus einem Mehrkörpersimulationsprogramm in Matlab reinladen und plotten lassen. Dafür hab ich eine Matlab Data vom Simulationsmodell erstellen lassen. Nun hab ich in meiner Plotfunktion folgenden Code zum einlesen der Simulationsergebnisse erstellt:

Code:

%Daten von Simulation einlesen
simDatas  = readSimulation(simfile, freqs);
%für alle Frequenzen
allFreqs = sort(unique([measData.f, simDatas.f]));
% Simulationsdaten plotten
     input2 = find(freq == [simDatas.f]);
            plot(ax, 1000*simDatas(input2).x, 0.001*simDatas(input2).F, '-');
            result = Formeln(simDatas(input2));
 


In einer weiteren Funktion habe ich alle relevanten Formeln zur Berechnung der notwendigen Werte für die Plots definiert.

Code:

%max. Verschiebung
chars.xamp = 0.5*(max(data.x) - min(data.x));

%max. Kraft
chars.Famp = 0.5*(max(data.F) - min(data.F));

%Verlustarbeit
chars.Aw = trapz(data.x, data.F);

%dynamische Steifikeit
chars.cdyn = chars.Famp / chars.xamp;

%Verlustwinkel
chars.delta = asin(chars.Aw/(pi*chars.Famp*chars.xamp));
 


Nun bringt mir matlab folgende Fehlermeldung:

Error using *
Inner matrix dimensions must agree.

Error in Formeln (line 44)
chars.delta = asin(chars.Aw/(pi*chars.Famp*chars.xamp));

Error in evalPlotMessSim (line 53)
result = Formeln(simDatas(input2));

Error in Hauptprogramm (line 26)
[res, b] = evalPlotMessSim(...


Hab jetzt versucht mit dem debug den Fehler zu finden, allerdings erfolglos. Versteh auch nicht was der erste Fehler aussagen soll. Im workspace werden alle Werte reingeladen die benötigt werden.

Gruss
kwd46056
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2017, 22:59     Titel:
  Antworten mit Zitat      
Hallo,

chars.Famp und chars.xamp sind vermutlich Vektoren? Dann willst du sie wahrscheinlich komponentenweise (.*) multiplizieren, nicht als Matrizen (*).
Du solltest dann auch ./ statt / verwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.11.2017, 10:14     Titel:
  Antworten mit Zitat      
Guten Morgen,

vielen Dank für die Hilfe. Es kommen nun keine Fehlermeldungen mehr. Die Hysteresekennlinien der Messungen und Simulation werden nun auch wie gewollt geplottet. Habe allerdings noch ein kleines Problem, dass beim 2 Digramm die dynamische Steifigkeit und der Verlustwinkel nicht geplottet werden. Laut debug, hab ich jetzt herausgefunden, das matlab mir die Werte für Steifigkeit und Verlustwinkel nur für eine Frequenz ausgibt, obwohl ich für alle Frequenzen die Werte haben will.

Folgenden code hab ich dafür geschrieben:

Code:

function  [result, b] = evalPlotMessSim(...
                      strHall,...
                      freqs,...
                      file,...
                      simfile)
%Daten von Messungen einlesen
measData = readMessung(file);
%Daten von Simulation einlesen
simDatas  = readSimulation(simfile, freqs);
%für alle Frequenzen
allFreqs = sort(unique([measData.f, simDatas.f]));

% Alle Werte für cdyn und delta für alle Frequenzen

 allFreq   = [result.freq];  % Ausgabe aller Frequenzen
 allCdyn   = [result.cdyn];  % Ausgabe aller dynamischen Steifigkeiten
 allDelta  = [result.delta]; % Ausgabe aller Verlustwinkel
   
% Plot dynamische Steifigkeit
   plot (ax(1), allFreq, allCdyn, 'x');
     
% Plot Verluswinkel
   plot (ax(2), allFreq, 180/pi*allDelta, 'x');
 


Nach ausführen des Programm gibt mir matlab im diagramm nur ein x aus.
Mir fehlt der Befehl damit matlab mir die Werte für alle Frequenzen ausgibt.

Gruss
kwd46056
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2017, 10:24     Titel:
  Antworten mit Zitat      
Hallo,

das Problem dürfte in der Erzeugung von result liegen.
Genaueres kann ich nicht sagen, da ich nicht sehe, wie result erzeugt wird.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.11.2017, 10:38     Titel:
  Antworten mit Zitat      
Hallo,

also das result wird über die Funktion Formeln (ein paar Einträge weiter oben gepostet) definiert.
Schaut im code so aus:

Code:

function  [result, b] = evalPlotMessSim(...
                      strHall,...
                      freqs,...
                      file,...
                      simfile)

%Daten von Messungen einlesen
measData = readMessung(file);

%Daten von Simulation einlesen
simDatas  = readSimulation(simfile, freqs);

%für alle Frequenzen
allFreqs = sort(unique([measData.f, simDatas.f]));                          
       
%% Kraft-Weg (x-F) Plots mit Einrichtung der Seite
b(2) = figure(...
    'Name', sprintf('%s x-F %s', strHall),...  
                    'PaperType',    'A4', ...
                    'Units','centimeters', ...
                    'PaperUnits','centimeters');
pos   = get(b(2), 'Position');
psize = get(b(2), 'Papersize');
set(b(2), 'Position', [pos(1:2)+pos(3:4)-psize psize]);
set(0, 'defaultAxesFontSize', 6);

%Plots in drei Spalten verteilt
ncols = 3;                                                                
nrows = ceil(length(allFreqs)/ncols);                                      

icol   = 0;
irow   = 1;
result = Formeln();

%% Plot dynamische Steifigkeit und Verlustwinkel

% Achsenbeschriftung
   ax    = [];
   ax(1) = subplot(2,1,1);
   hold (ax(1), 'on');
   grid (ax(1), 'on');
   set  (ax(1), 'XMinorGrid', 'on', 'YMinorgrid', 'on');
   
   ax(2) = subplot(2,1,2);
   hold (ax(2), 'on');
   grid (ax(2), 'on');
   set  (ax(2), 'XMinorGrid', 'on', 'YMinorgrid', 'on');
   
   
   allFreq   = [result.freq];  % Ausgabe aller Frequenzen
   allCdyn   = [result.cdyn];  % Ausgabe aller dynamischen Steifigkeiten
   allDelta  = [result.delta]; % Ausgabe aller Verlustwinkel
   
% Plot dynamische Steifigkeit
   plot (ax(1), allFreq, allCdyn, 'x');                                    
     
% Plot Verluswinkel
   plot (ax(2), allFreq, 180/pi*allDelta, 'x');

 


Gruss
kwd46056
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2017, 11:06     Titel:
  Antworten mit Zitat      
Hallo,

na, Klasse.
Code:
result = Formeln();


... und was ist nun Formeln ?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.11.2017, 11:16     Titel:
  Antworten mit Zitat      
allFreqs ist im workspace als 1x12 double hinterlegt (also alle benötigten Frequenzen).Wieso ist dann freq in der for Schleife ein 1x1double . Liegt der Fehler also in der for Schleife?


Code:

for iplot = 1:length(allFreqs)
    freq = allFreqs(iplot);
    icol = icol + 1;
    if icol>ncols, icol=1; irow=irow+1;
    end
 


Ausgehen von freq werden ja die Results ausgegeben,

Code:

% Messdaten plotten
    input = find(freq == [measData.f]);
            plot(ax, 1000*measData(input).x, 0.001*measData(input).F, '-');
            result = Formeln(measData(input));                              
           
% Simulationsdaten plotten
     input2 = find(freq == [simDatas.f]);
            plot(ax, 1000*simDatas(input2).x, 0.001*simDatas(input2).F, '-');
            result = Formeln(simDatas(input2));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
kwd46056
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.11.2017, 11:23     Titel:
  Antworten mit Zitat      
Formeln ist eine Funktion, die Formlen zur Berechnung der jeweiligen Werte, cdyn und Verlustwinkel enthält.

Code:

function chars = Formeln(data)
%   Detailed explanation goes here
if nargin == 0
    chars = struct( ...                                                    % gibt die Anzahl der im Aufruf
        'freq',     {}, ...                                                % übergebenen Eingabeargumente an die
        'xamp',     {}, ...                                                % aktuelle ausgfeührte Funktion zurück
        'Famp',     {}, ...
        'dFx0',     {}, ...
        'dFend',    {}, ...
        'Aw',       {}, ...
        'delta',    {}, ...
        'cdyn',     {});
    return
end

chars       = {};                                                            
%chars.ID    = ID;
chars.freq  = data.f;

%%Formeln zur Berechnung der Werte

%max. Verschiebung
chars.xamp = 0.5*(max(data.x) - min(data.x));

%max. Kraft
chars.Famp = 0.5*(max(data.F) - min(data.F));

%max. Kraft bei x=0
idxX0         = (data.x(:).*circshift(data.x(:), [-1 0]) <= 0);
chars.dFx0      = 0.5*abs(diff(data.F(idxX0)));

%max. Kraft bei min und max. x
    [~, indXmin]    = min(data.x);
    [~, indXmax]    = max(data.x);
    chars.dFend     = 0.5*abs(diff(data.F([indXmin, indXmax])));

%Verlustarbeit
chars.Aw = trapz(data.x, data.F);

%dynamische Steifikeit
chars.cdyn = chars.Famp ./ chars.xamp;

%Verlustwinkel
chars.delta = asin(chars.Aw/(pi.*chars.Famp.*chars.xamp));
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2017, 11:23     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wieso ist dann freq in der for Schleife ein 1x1double

weil du immer nur ein Element extrahierst.

Zitat:
Liegt der Fehler also in der for Schleife?

Das kann ich nicht sagen, da ich nicht nachvollziehen kann, wie die Code-Fragmente nun zusammengehören.

Ich kann dir nur raten, den Debugger zu verwenden und genau nachzuschauen, wann das erste Mal eine Abweichung vom erwarteten Verhalten auftritt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 17.11.2017, 19:41     Titel:
  Antworten mit Zitat      
Hallo,

ich glaube ich weiss wo der Fehler liegt, weshalb die plots für cdyn und delta nur für einen Wert ausgegeben werden. Durch die mangelnde Erfahrung mit Matlab, weiss ich leider nicht wie ich das in Matlab umsetzen soll. Wie bereits bekannt geb ich mit meiner folgenden Funktion die Plots aus. Der Code ist in zwei Plots unterteilt. Der erste Plot gibt mir die Kraft in Abhängigkeit von Weg für verschiedene Frequenzen in mehreren Plots aus (wie in der Datei x_F_plots zu sehen). Der zweite Plot soll mir in einem Diagramm jeweils die cdyn und delta für alle Frequenzen darstellen (datei cdyn_delta). Ich glaub das Problem liegt an der for Schleife des ersten Plots. Ist es denkbar das ich die Ausgabe der Plots für cdyn und delta vor der for Schleife einbinden muss? Falls ja wie müsste der Befehl aussehen? Sorry, falls ich euch hier zu sehr auf die nerven gehe.

Code:

function  [result, b] = evalPlotMessSim(...
                      strHall,...
                      freqs,...
                      file,...
                      simfile)
%Daten von Messungen einlesen
measData = readMessung(file);
%Daten von Simulation einlesen
simDatas  = readSimulation(simfile, freqs);
%für alle Frequenzen
allFreqs = sort(unique([measData.f, simDatas.f]));                        
       
%% Kraft-Weg (x-F) Plots mit Einrichtung der Seite
b(2) = figure(...
    'Name', sprintf('%s x-F %s', strHall),...  
                    'PaperType',    'A4', ...
                    'Units','centimeters', ...
                    'PaperUnits','centimeters');
pos   = get(b(2), 'Position');
psize = get(b(2), 'Papersize');
set(b(2), 'Position', [pos(1:2)+pos(3:4)-psize psize]);
set(0, 'defaultAxesFontSize', 6);

%Plots in drei Spalten verteilen
ncols = 3;                                                                
nrows = ceil(length(allFreqs)/ncols);                                      

icol   = 0;
irow   = 1;
result = Formeln();


for iplot = 1:length(allFreqs)
    freq = allFreqs(iplot);
    icol = icol + 1;
    if icol>ncols, icol=1; irow=irow+1;
    end
   
    ax = subplot(nrows, ncols, iplot);
    hold (ax, 'on');
    grid (ax, 'on');
    set  (ax, 'XMinorGrid', 'on', 'YMinorGrid', 'on');
       
% Messdaten plotten
    input = find(freq == [measData.f]);
    if ~isempty(input) &&  ~isempty(measData(input).x)  
            plot(ax, 1000*measData(input).x, 0.001*measData(input).F, '-');
            result = Formeln(measData(input));                              
    end      
% Simulationsdaten plotten
     input2 = find(freq == [simDatas.f]);
     if ~isempty(input2) &&  ~isempty(simDatas(input2).x)
            plot(ax, 1000*simDatas(input2).x, 0.001*simDatas(input2).F, '-');
            result = Formeln(simDatas(input2));
     end
                                                                           
%Formatierung der Plots
       title( ax, sprintf('%.2fHz', freq));
       legend ('Messung', 'Simpack');
       xlim(    ax, [ -1.1  +1.1]);
       xlabel(  ax, 'x [mm]');
       ylim(    ax, [-50 +50]);
       ylabel(  ax, 'F  [kN]');
       
end
 %% Plot dynamische Steifigkeit und Verlustwinkel
    b(1)       = figure( ...
                    'Name', sprintf('%s cdyn %s', strHall), ...
                    'PaperType',    'A4', ...
                    'Units',        'centimeters', ...
                    'PaperUnits',   'centimeters');
    pos         = get(b(1), 'Position');
    psize       = get(b(1), 'Papersize');
    set(b(1), 'Position', [pos(1:2)+pos(3:4)-psize psize]);
    set(0, 'defaultAxesFontSize', 6);
   
% Achsenbeschriftung
   ax    = [];
   ax(1) = subplot(2,1,1);
   hold (ax(1), 'on');
   grid (ax(1), 'on');
   set  (ax(1), 'XMinorGrid', 'on', 'YMinorgrid', 'on');
   
   ax(2) = subplot(2,1,2);
   hold (ax(2), 'on');
   grid (ax(2), 'on');
   set  (ax(2), 'XMinorGrid', 'on', 'YMinorgrid', 'on');
   
   
   allFreq   = [result.freq];   % Ausgabe aller Frequenzen
   allCdyn   = [result.cdyn];  % Ausgabe aller dynamischen Steifigkeiten
   allDelta  = [result.delta]; % Ausgabe aller Verlustwinkel
   
% Plot dynamische Steifigkeit
   plot (ax(1), allFreq, allCdyn, 'o-');
   
     
% Plot Verluswinkel
   plot (ax(2), allFreq, 180/pi*allDelta, 'x');
   
     
% Formatierung Diagramm 1 (dynmaische Steifigkeit)
   title( ax(1), sprintf('%s', strHall));
   xlabel(ax(1), 'f [Hz]');
   ylabel(ax(1), 'c_{dyn} [kN/mm]');
 
% Formatierung Diagramm 2 (Verlustwinkel)
   title(ax(2), sprintf('%s', strHall));
   xlabel(ax(2), 'f [Hz]');
   ylabel(ax(2), '\delta_{loss} [°]');

end
 


Gruss
kwd46056

cdyn_delta.PNG
 Beschreibung:

Download
 Dateiname:  cdyn_delta.PNG
 Dateigröße:  35.43 KB
 Heruntergeladen:  280 mal
x_F_plots.PNG
 Beschreibung:

Download
 Dateiname:  x_F_plots.PNG
 Dateigröße:  65.44 KB
 Heruntergeladen:  306 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
kwd46056
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 18.11.2017, 23:13     Titel:
  Antworten mit Zitat      
Hallo,

keiner einen Tipp für mich um die Plots darstellen zu können.

Gruss
kwd46056
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2017, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

es ist sehr schwierig, dir bei sehr langem Code zu helfen, wenn man nicht mal genau weiß, wie du ihn aufrufst. Du kannst das deutlich erleichtern, indem du das Problem auf das wesentliche reproduzierst und uns die Möglichkeit gibst, das auch auszuführen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 20.11.2017, 08:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich versuchs jetzt auf ein Minimum zu reduzuieren. Hab folgendes txt.file (Werte für x und F für die entsprechenden Frequenzen) hochgeladen damit du es vielleicht ausführen kannst . Dieses txt.file will ich in zwei Diagrammen, auf unterschiedlicher Weise Darstellen. Das erste Diagramm soll mir in einzelne Diagramme die x-und F-Werte für die jeweiligen Frequenzen darstellen. Das funktioniert auch wunderbar.

Das zweite Diagramm soll mir dann aus allen Hysteresekennlinien des 1ten Diagramms den entsprechenden Wert für dyn.Steifigkeit berechnen und in einem Diagramm plotten (es sind in dem Beispiel 7 Werte).

Formel zur Berechnung dyn.Steifigkeit: c_dyn=Fmax/xmax

Beim zweiten Diagramm hab ich das Problem, dass ich es nicht hinbekomme alle berechneten Werte in einem Diagramm zu plotten.

Hoffe es ist jetzt einfacher zu Helfen Very Happy.

Gruss
kwd46056

Beispiel.txt
 Beschreibung:

Download
 Dateiname:  Beispiel.txt
 Dateigröße:  28.38 KB
 Heruntergeladen:  589 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2017, 10:56     Titel:
  Antworten mit Zitat      
Hallo,

wie steht die Datei nun mit dem Code in Verbindung?
In welchem Codeteil das Problem liegt, ist mir auch weiterhin nicht klar.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.10.17
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 20.11.2017, 11:24     Titel:
  Antworten mit Zitat      
Hallo Harald,

hab den letzten Beitrag komplett losgelöst von meinem Code erstellt. Möchte erstmal wissen wie ich den Plot fürs zweite Diagramm bekomme. Sprich Matlab soll mir für jede Spalte den maximalen Wert für x und F finden und daraus cdyn berechnen. Anschließend soll Matlab mir alle berechneten Werte in einem Diagramm plotten.

Aber um deine Fragen zu beantworten:
Bei der ersten Frage weiss ich nicht genau was Sie meinen. Die Datei steht mit dem Code dahingehend in Verbindung, das dadurch die Messdaten eingelesen werden.
Das Problem liegt ab dieser Zeile im Code:
Mit dem Debugger hab ich rausgefunden allFreq ein 1x1double ist mit der Frequenz 10Hz. Es müsste aber ein 1x11 double sein um alle Frequenzen abzudecken.
[code]
allFreq = [result.freq];
allCdyn = [result.cdyn];

% Plot dynamische Steifigkeit
plot (ax(1), allFreq, allCdyn, 'o-');



Falls es immernoch unklar ist, werde ich nächste Woche an der Hochschule mein Glück versuchen.

Vielen Dank für die Mühe

Gruss
kwd46056
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.