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

Meta Model Darstellung

 

ThKo26
Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 19.08.2019, 15:18     Titel: Meta Model Darstellung
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Anliegen:

Ich habe ein Simulationsmodell, Eingangparameter Ausgangsparameter.

Eingangsparameter sind: X1, X2, X3
Ausgangsparameter sind: Y

Ich habe nun 5 Ergebnisblöcke, weil mein Modell nur 2D Rechnen kann.

X1(7Variablen) und X2(7Variablen und X3(1Variable) ergibt Y(49Variablen)
das ganze mache ich 5 mal, weil X3(5Variablen) hat.

Frage 1: wie bekomme ich jetzt relativ einfach eine Tabelle mit X1,X2,X3 und Y?

Und wie kann ich dies mit z.B. plotSlice darstellen, hierfür wird ein fit benötigt, den ich aber "nicht" benötige, da ich schon meine Ergebnisse in Abhängigkeit meiner drei Parameter (X1,X2,X3) besitze.

Ich freue mich auf Inputs und Unterstützung.

Danke und Grüße
Thomas
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.08.2019, 19:01     Titel:
  Antworten mit Zitat      
Hallo,

zu Frage 1: repmat und repelem sollten helfen, X1, X2 und X3 passend zu vervielfältigen.

zu Frage 2: plotSlice ist nun mal ausschließlich für diese Modelle. Hier würde ich slice verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 21.08.2019, 11:56     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Rückmeldung.
zur Frage 1: ich habe es mit einer for schleife gelöst, weil ich alle files erst step by step reinlade und dann aufbereite. funktionert super.

Zur Darstellung (Frage2).

Ich werde es mit slices mal probieren. Bis jetzt habe ich es mit rstool und einem fitlm --> plotSlice gemacht.
in diesem Fall sind beide gleich. also ich erkenne keinen Unterschied zwischen den beiden Darstellungen.
Code:

%% PLOT SLICES
alpha = 0.01; % Significance level
rstool(table.X, table.Y, 'linear', alpha, table.Xn, table.Yn);

mdl = fitlm(table.X,table.Y(1:end,1),'interactions'); % 'linear'
h = plotSlice(mdl);


was mir aber fehlt ist, dass ich keine Bedingungen setzen kann.
Bsp.:
Eingangsparameter sind: X1, X2, X3
Ausgangsparameter sind: Y1 und Y2

ich habe es wieder mit dem rstool gemacht, dann werden mir 6 Fesnter angezeigt.
Jetzt möchte ich aber, dass ich X1,X2 und X3 ändere, aber die Bedingung setze, dass Y2 ein gewünschter Wert ist, der sich nicht ändert und daraufhin die Y1 angezeigt werden.
ideal wäre natürlich, wenn ich für Y2 eine Bedingung setzen kann, mit einem Range +-0.5.

Ich werde jetzt erstmal slice von dir probieren und werde weiter berichten.

Danke und Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 21.08.2019, 16:02     Titel:
  Antworten mit Zitat      
Hallo Harald,

wenn ich mit slices arbeite erhalte ich folgende Fehlermeldung.
Code:

Error using griddedInterpolant
The grid was created from grid vectors that were not strictly monotonic increasing.

Error in interp3 (line 142)
            F = griddedInterpolant(X, Y, Z, V, method,extrap);

Error in slice (line 104)
    vi = interp3(x,y,z,v,xi,yi,zi,method);
 
148                 rethrow(gime);
 


Das verwendete Script:
Code:

%% PLOT SLICES
alpha = 0.01; % Significance level
rstool(table.X, table.Y, 'linear', alpha, table.Xn, table.Yn(1:end,1));

mdl = fitlm(table.X,table.Y(1:end,1),'interactions'); % 'linear'
h = plotSlice(mdl);

xslice = [];  
yslice = [];
zslice = [];

X1 = table.X(1:end,1);
Y1 = table.X(1:end,2);
Z1 = table.X(1:end,3);
%
% V1(1:end,1,1) = table.X(1:end,1);
% V1(1:end,2,2) = table.X(1:end,2);
% V1(1:end,3,3) = table.X(1:end,3);
% V1(1:end,4,4) = table.Y(1:end,1);

[aa, bb, cc] = meshgrid(X1,Y1,Z1);
dd = meshgrid(table.Y(1:end,1),table.Y(1:end,1),table.Y(1:end,1));
% s = slice(V1, xslice, yslice, zslice);
s = slice(aa, bb, cc, dd, xslice, yslice, zslice);
 


matlab.mat
 Beschreibung:

Download
 Dateiname:  matlab.mat
 Dateigröße:  13.33 KB
 Heruntergeladen:  219 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: 21.08.2019, 16:17     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung sagt ja, wo das Problem ist.
Hast du versucht, die Daten entsprechend anzupassen?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 21.08.2019, 16:27     Titel:
  Antworten mit Zitat      
Hallo Harald,

nein, ich habe die Daten nicht angepasst. Ich habe nur die Ergebnisse zusammen gesetzt.
Die Daten sind nicht monoton steigend, sondern wiederholen sich. Ich habe die mat File hinzugefügt, für das bessere Nachverfolgen.
X1 geht immer von 4-22,
X2 geht immer von 0 -7,
und X3 ist steigend.


Grüße
Thomas
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: 21.08.2019, 18:54     Titel:
  Antworten mit Zitat      
Hallo,

ein Versuch:
Code:
a = unique(table.X(:,1));
b = unique(table.X(:,2));
c = unique(table.X(:,3));
d = reshape(table.Y(:,1), 7, 19 ,5);
slice(a,b,c,d, 5:5:20, 1:3:7, 51.92)

Ob d hier richtig sortiert ist, bin ich mir auf Anhieb nicht sicher.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 22.08.2019, 07:35     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für die Hilfe. Ich schaue mir das ganze in Ruhe an und komme auf dich zurück.

Ich habe noch einen alternativen Weg gefunden, an dem ich gerade experimentiere.

gplotmatrix

Dazu kommt bald mehr.

Bis jetzt habe ich noch keine Bedingung eingefügt bei den verschriebenen Varianten.

Gruß Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 23.08.2019, 16:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe mir das mit unique und slices genauer angeschaut.

sobald ich eine Bedingung einfüge, kann mir slices nicht mehr helfen, bzw. ich habe noch nicht herausbekommen wie.
Bsp.: wenn ich jetzt aus table.Y2 nur den Wert 30+-0,5 haben möchte, muss ich den Umweg gehen, dass ich erst alle Werte mit dem gewünschten Werte finde und diese Zeilen für table.Y1 übernehme.

Hast du noch eine Idee, wie dies mit matlab einfacher geht?
Sonst ist mit Slices die Darstellung echt top!! Danke nochmal!

nun zum gplotmatrix:
Code:

X1 = table.X(:,1);
Y1 = table.X(:,2);
Z1 = table.X(:,3);
V1 = table.Y(:,1);
V3 = table.Y(:,3);
data = [X1 Y1 Z1 V1 V3];

f3 = figure ('Name', 'Overview Matrix');
set(f3,'units','centimeter','Position',[5, 2, 35, 27]);
[h1, ax2, bigax3] = gplotmatrix(data,[],group,['b' 'r' 'g'],['.' '*' '+'],[],'off','grpbars');
for i = 1:length(labels)                                       % label the plots
  xlabel(ax2(length(labels),i), labels{i})
  ylabel(ax2(i,1), labels{i})
end

was mir fehlt ist noch der Correlations plot. hat jemand eine IDee, wie ich den noch bekommen,
weil corrplot geht nicht.

Danke und Grüße
Thomas

 
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: 23.08.2019, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
wenn ich jetzt aus table.Y2 nur den Wert 30+-0,5 haben möchte, muss ich den Umweg gehen, dass ich erst alle Werte mit dem gewünschten Werte finde und diese Zeilen für table.Y1 übernehme.

Hast du noch eine Idee, wie dies mit matlab einfacher geht?

Das sind doch nur zwei Zeilen Code. Ich wüsste nicht, wie es einfacher geht.

Zitat:
weil corrplot geht nicht.

Was geht daran nicht? Bitte (wie immer!) angeben, was du versucht hast und welche Probleme dabei aufgetreten sind.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 23.08.2019, 21:18     Titel:
  Antworten mit Zitat      
Hallo,

ich bin jetzt soweit, dass ich mit meinem gplotmatrix alle Daten aus der Table plotten kann, zusätzlich kann ich bedingungen mit der Hilfe von group definieren und darstellen.

nun habe ich auf der Diagnoale die histogramme. ich hätte sehr gerne eine Kombination aus Darstellung_1 und Darstellung_2.

und ich weiß nicht, ob das so ohne weiteres möglich ist, da ich hierzu gplotmatrix und corrplot nutze.

Darstellung_1 ist aus dem Internet, da ich in gplotmatrix noch nicht die Einstellung gefunden habe, nur die obere, bzw die unteren Plothälfte anzeigen zu lassen.

Gerne weitere Vorschläge.

Ich habe auch schon überlegt, alles selbst zu schreiben und mit subplot darzustellen. aber lieber mit vorhandenen befehlen umsetzen.

Danke und Grüße
Thomas

Darstellung_2.JPG
 Beschreibung:

Download
 Dateiname:  Darstellung_2.JPG
 Dateigröße:  108.1 KB
 Heruntergeladen:  216 mal
Darstellung_1.JPG
 Beschreibung:

Download
 Dateiname:  Darstellung_1.JPG
 Dateigröße:  39.44 KB
 Heruntergeladen:  238 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: 23.08.2019, 21:36     Titel:
  Antworten mit Zitat      
Hallo,

ich sehe nur die Möglichkeit, die nicht gewünschten Plots zu löschen. Mit einem Beispiel aus der Doku:

Code:
load discrim;
[h, ax, bigAx] = gplotmatrix(ratings(:,1:3),ratings(:,4:6),group);
rows = repmat((1:size(ax,1))',1, size(ax,2));
cols = repmat(1:size(ax,2),size(ax,1),1);
delete(ax(rows > cols)) % linke untere Hälfte löschen


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 23.08.2019, 21:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke, dass habe ich in der Doku nicht gesehen gehabt.

zur Kombination hast du keine Idee ?

die function von corrplot, ruft die gplot function auf:
Code:

% Compute plot information:

[R,PValue] = corr(X,'type',corrType,'rows',whichRows,'tail',tail);

Mu = nanmean(X);
Sigma = nanstd(X);
Z = bsxfun(@minus,X,Mu);
Z = bsxfun(@rdivide,Z,Sigma);
ZLims = [nanmin(Z(:)),nanmax(Z(:))];

% Basic plot:

figure('Tag','corrPlotFigure')
[H,Ax,bigAx] = gplotmatrix(X,[],[],[],'o',2,[],'hist',varNames,varNames);

% Format plot:

set(H(logical(eye(numVars))),'EdgeColor','c')
sXlabels = get(Ax,'XLabel');
set([sXlabels{:}],'FontWeight','bold','Color',[0 0 0.6])
set([sXlabels{:}],'FontWeight','bold','Color',[0 0 0.6])
set(get(bigAx,'Title'),'String','{\bf Correlation Matrix}')

 


somit, könnte man eine Funktion schreiben, die beides beinhaltet ......

Grüße
Thomas
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: 23.08.2019, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

anscheinend ist mir noch nicht klar, was du kombinieren willst.

Zitat:
somit, könnte man eine Funktion schreiben, die beides beinhaltet ......

Gute Idee

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 184
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 24.08.2019, 18:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

Harald hat Folgendes geschrieben:


anscheinend ist mir noch nicht klar, was du kombinieren willst.

d



ich habe die Kombination hochgeladen, die ich haben möchte. Ist zwar nur zusammen geschnitten, sollte aber das zeigen was ich meine.


Ich werde damit anfangen und hier bei Problemen schreiben.

Grüße
Thomas

DARSTELLUNG.JPG
 Beschreibung:

Download
 Dateiname:  DARSTELLUNG.JPG
 Dateigröße:  106.01 KB
 Heruntergeladen:  216 mal
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.