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

Datenauswertung einer Strömungsmessung

 

leecher
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 08.04.2017, 12:30     Titel:
  Antworten mit Zitat      
Nach langem Rumprobieren mit slice komme ich schon in die richtige Richtung (siehe Anhang sliceplot.jpg).

Hier ist der Code:
Code:
v(:,:,1) = xlsread('data.xlsx','test','A5:I13')
v(:,:,2) = xlsread('data.xlsx','test','K5:S13')
v(:,:,3) = xlsread('data.xlsx','test','U5:AC13')
v(:,:,4) = xlsread('data.xlsx','test','AE5:AM13')
[x,y,z] = meshgrid(0:37.5:300,0:37.5:300,5:5:20);
xslice = [];
yslice = [];
zslice = [0,5,10,15,20];
slice(x,y,z,v,xslice,yslice,zslice)
a =makeColorMap([1 0 0], [1 1 0], [0 0.8 0.2])
colormap(a)
view(120,10)
colorbar('eastoutside')
hd= colorbar;
set(get(hd,'title'),'String','m/s');
set(gca,'position',[0.05 0.05 0.75 0.9]);
set(hd,'position',[0.88 0.05 0.03 0.9]);
shading flat
saveas(gcf,'sliceplot.emf')
 


Leider stimmen die Bilder nicht mit den Bildern aus Excel (werte v.jpg) überein: Die Höhe der Ebenen (z) nimmt hier von links nach rechts immer um 5.
In der Grafik sliceplot.jpg müsste also die linke Ebene (aus werte v.jpg) unten und die ganz rechte oben liegen.
Wie muss ich meine v- Werte aus Excel auslesen (Minimalbeispiel?), damit ich diese Grafik erhalte?

sliceplot.jpg
 Beschreibung:

Download
 Dateiname:  sliceplot.jpg
 Dateigröße:  80.49 KB
 Heruntergeladen:  332 mal
werte v.JPG
 Beschreibung:

Download
 Dateiname:  werte v.JPG
 Dateigröße:  192.29 KB
 Heruntergeladen:  334 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: 09.04.2017, 09:02     Titel:
  Antworten mit Zitat      
Hallo,

mir ist die Frage nicht ganz klar.
Wenn ich das Bild richtig verstehe, versuch mal
Code:
set(gca, 'XDir', 'reverse')


Alternative
rotate3d
und dann versuchen, das passend zu ziehen.

Bei interp3 wären v deine Daten, die du zur Einfärbung nutzen willst.
Warum du für einen Punkt drei Werte hast, weiß ich nun immer noch nicht.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 10.04.2017, 16:18     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Warum du für einen Punkt drei Werte hast, weiß ich nun immer noch nicht.


Ich habe für v nur einen Wert. Bei 3D-Array dachte ich anfangs, dass ich 3 Geschwindigkeitskomponenten für v benötige (somit Geschwindigkeitsvektor vor Punkt darstellbar), deshalb hatte ich die fehlenden v-Werte genullt (Strömung nur in y-Richtung)
Da ich leider kein Minimalbeispiel habe und ich mit meinem Latein am Ende bin gebe ich auf und beschränke mich auf die Excel Darstellung.
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: 10.04.2017, 16:24     Titel:
  Antworten mit Zitat      
Hallo,

ich habe dir gesagt, wie du dein letztes Problem beheben kannst (9.4., 09:02). Wenn das nicht funktionieren sollte, dann erkläre bitte deine Probleme damit.

Es ist etwas befremdlich, wenn man über Tage eines deiner Probleme nach dem anderen löst und das dann vergebene Mühe zu sein scheint.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 10.04.2017, 17:08     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

ich habe dir gesagt, wie du dein letztes Problem beheben kannst (9.4., 09:02). Wenn das nicht funktionieren sollte, dann erkläre bitte deine Probleme damit.

Es ist etwas befremdlich, wenn man über Tage eines deiner Probleme nach dem anderen löst und das dann vergebene Mühe zu sein scheint.

Grüße,
Harald

Also ich habe es mit
Code:
set(gca, 'XDir', 'reverse')

probiert, leider weichen die Grafiken voneinander ab (s. Anhang). Ich habe an dem gesamten Problem schon insgesamt 24h herum gedoktert, stundenlang recherchiert und versucht auf die Lösung zu kommen. Hier ist nochmal der gesamte Code:
Code:
v(:,:,1) = xlsread('data.xlsx','test','A5:I13')
v(:,:,2) = xlsread('data.xlsx','test','K5:S13')
v(:,:,3) = xlsread('data.xlsx','test','U5:AC13')
v(:,:,4) = xlsread('data.xlsx','test','AE5:AM13')
[x,y,z] = meshgrid(0:37.5:300,0:37.5:300,5:5:20);
xslice = [];
yslice = [];
zslice = [0,5,10,15,20];
slice(x,y,z,v,xslice,yslice,zslice)
a =makeColorMap([1 0 0], [1 1 0], [0 0.8 0.2])
colormap(a)
view(120,10)
colorbar('eastoutside')
hd= colorbar;
set(get(hd,'title'),'String','m/s');
set(gca,'position',[0.05 0.05 0.75 0.9]);
set(hd,'position',[0.88 0.05 0.03 0.9]);
set(gca, 'XDir', 'reverse')
saveas(gcf,'sliceplot.emf')


sliceplot2.jpg
 Beschreibung:

Download
 Dateiname:  sliceplot2.jpg
 Dateigröße:  182.56 KB
 Heruntergeladen:  321 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: 10.04.2017, 17:21     Titel:
  Antworten mit Zitat      
Hallo,

du möchtest ja ohnehin einen glatteren Verlauf haben. Statt interp3 ist vielleicht scatteredInterpolant leichter in der Anwendung, z.B. "Compare Scattered Data Interpolation Methods".
Wenn du einen (verkleinerten oder verfälschten) Datensatz zur Verfügung stellen kannst, könnte man dir effizienter helfen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 10.04.2017, 17:49     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

du möchtest ja ohnehin einen glatteren Verlauf haben. Statt interp3 ist vielleicht scatteredInterpolant leichter in der Anwendung, z.B. "Compare Scattered Data Interpolation Methods".
Wenn du einen (verkleinerten oder verfälschten) Datensatz zur Verfügung stellen kannst, könnte man dir effizienter helfen.

Grüße,
Harald

Hallo Harald,
anbei die Excel Daten als zip. Bei der Interpolation bin ich mir noch nicht so sicher, welche Variante "gut aussieht".

Danke vielmals für deine Hilfe,
Gruß

data.zip
 Beschreibung:

Download
 Dateiname:  data.zip
 Dateigröße:  8.48 KB
 Heruntergeladen:  298 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: 10.04.2017, 18:56     Titel:
  Antworten mit Zitat      
Hallo,

da du ja die Daten in der für interp3 benötigten Form zur Verfügung gestellt hast, folgender Vorschlag:
Code:
xq = linspace(0, 300, 100);
yq = xq;
zq = linspace(5, 20, 100);
[xq, yq, zq] = meshgrid(xq, yq, zq);
vq = interp3(x,y,z,v, xq, yq, zq);
slice(xq,yq,zq,vq,xslice,yslice,zslice)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 10.04.2017, 19:51     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

da du ja die Daten in der für interp3 benötigten Form zur Verfügung gestellt hast, folgender Vorschlag:
Code:
xq = linspace(0, 300, 100);
yq = xq;
zq = linspace(5, 20, 100);
[xq, yq, zq] = meshgrid(xq, yq, zq);
vq = interp3(x,y,z,v, xq, yq, zq);
slice(xq,yq,zq,vq,xslice,yslice,zslice)


Grüße,
Harald


Ich habe den Code wie folgt integriert:
Code:
v(:,:,1) = xlsread('data.xlsx','test','A5:I13')
v(:,:,2) = xlsread('data.xlsx','test','K5:S13')
v(:,:,3) = xlsread('data.xlsx','test','U5:AC13')
v(:,:,4) = xlsread('data.xlsx','test','AE5:AM13')
[x,y,z] = meshgrid(0:37.5:300,0:37.5:300,5:5:20);
xslice = [];
yslice = [];
zslice = [0,5,10,15,20];
xq = linspace(0, 300, 100);
yq = xq;
zq = linspace(5, 20, 100);
[xq, yq, zq] = meshgrid(xq, yq, zq);
vq = interp3(x,y,z,v, xq, yq, zq);
slice(xq,yq,zq,vq,xslice,yslice,zslice)
a =makeColorMap([1 0 0], [1 1 0], [0 0.8 0.2])
colormap(a)
view(120,10)
colorbar('eastoutside')
hd= colorbar;
set(get(hd,'title'),'String','m/s');
set(gca,'position',[0.05 0.05 0.75 0.9]);
set(hd,'position',[0.88 0.05 0.03 0.9]);
set(gca, 'XDir', 'reverse')
saveas(gcf,'sliceplot.emf')


Leider ist das Gitter jetzt so engmaschig, dass man von dem eigentlichen Strömungsprofil kaum was sieht. Bei der Interpolation meinte ich ja, dass ich evtl. die Variante ohne Interpolation (quasi die gleiche farbliche, Zellenformatierung wie in Excel) erstmal überprüfen möchte und bei Bedarf dann über den Befehl shading interp eine Interpolation hinzufügen kann.

sliceplot3.jpg
 Beschreibung:

Download
 Dateiname:  sliceplot3.jpg
 Dateigröße:  194.38 KB
 Heruntergeladen:  334 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: 10.04.2017, 19:56     Titel:
  Antworten mit Zitat      
Hallo,

du kannst weniger Stützpunkte für die Interpolation verwenden oder die eigentlichen Datenpunkte noch zusätzlich einzeichnen, z.B. mit scatter3 .

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 10.04.2017, 21:38     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

du kannst weniger Stützpunkte für die Interpolation verwenden oder die eigentlichen Datenpunkte noch zusätzlich einzeichnen, z.B. mit scatter3 .

Grüße,
Harald


Code:
v(:,:,1) = xlsread('data.xlsx','test','A5:I13')
v(:,:,2) = xlsread('data.xlsx','test','K5:S13')
v(:,:,3) = xlsread('data.xlsx','test','U5:AC13')
v(:,:,4) = xlsread('data.xlsx','test','AE5:AM13')
[x,y,z] = meshgrid(0:37.5:300,0:37.5:300,5:5:20);
xslice = [];
yslice = [];
zslice = [0,5,10,15,20];
xq = linspace(0, 300, 18);
yq = xq;
zq = linspace(5, 20, 4);
[xq, yq, zq] = meshgrid(xq, yq, zq);
vq = interp3(x,y,z,v, xq, yq, zq);
slice(xq,yq,zq,vq,xslice,yslice,zslice)
a =makeColorMap([1 0 0], [1 1 0], [0 0.8 0.2])
colormap(a)
view(120,10)
colorbar('eastoutside')
hd= colorbar;
set(get(hd,'title'),'String','m/s');
set(gca,'position',[0.05 0.05 0.75 0.9]);
set(hd,'position',[0.88 0.05 0.03 0.9]);
set(gca, 'XDir', 'reverse')
saveas(gcf,'sliceplot.emf')

Mit der Reduzierung der Stützpunkte geht es in die richtige Richtung, dennoch sind gerade an den Stellen mit großen Änderung sehr starke Abweichungen. Mit 9 Stützpunkten für x,y lande ich wieder beim alten Ergebnis...
Wenn ich scatter3 verwende erhalte ich die Fehlermeldung
Code:
Error using scatter3 (line 77)
X, Y and Z must be vectors of the same length.
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: 10.04.2017, 23:06     Titel:
  Antworten mit Zitat      
Hallo,

für scatter3 brauchst du Vektordaten. Also mit reshape oder (:) umwandeln.
Ich kann da nur empfehlen, die Beispiele in der Doku anzusehen. Das erste Beispiel zeigt schon (:).

Zitat:
Mit 9 Stützpunkten für x,y lande ich wieder beim alten Ergebnis...

Es gibt ja auch noch Möglichkeiten zwischen 9 und 100...

Zitat:
dennoch sind gerade an den Stellen mit großen Änderung sehr starke Abweichungen.

Abweichungen von was?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 11.04.2017, 00:05     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Abweichungen von was?


Siehe sliceplot2.jpg, welches ich heute gepostet habe:
In der Matlab Grafik wird für die unterste Ebene rechts vorne ein Wert von ca. 2,5 angezeigt. In der Excel Datei ist aber an der Stelle ein Wert von 1,4. Es fehlt also die rechte Spalte aus dem Excel Dokument in der Grafik. Durch das Interpolieren fällt das halt dann nicht mehr so auf.

Gruß
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: 11.04.2017, 10:52     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt:
Zitat:
Es gibt ja auch noch Möglichkeiten zwischen 9 und 100...


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.04.17
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 11.04.2017, 11:25     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Es gibt ja auch noch Möglichkeiten zwischen 9 und 100...

Ja die gibt es, aber ich möchte zunächst mal GENAU die Strömungsverteilung, so wie sie in EXCEL abgebildet ist und das ist eben eine 9x9 Raster. Ich weis, dass ich auch das Raster vergrößern lassen kann, aber dann habe ich ja wieder eine Interpolation, die mir die Werte verschwimmen lässt und man keine "harten Kanten" im Strömungsprofil sieht. In meinen Augen verfälsche ich damit das eigentliche Bild.
Der Sinn und Zweck, warum ich Matlab dafür nutze ist, dass ich die Ebenen aus Excel übereinander gestapelt in einer Grafik darstellen möchte. Mit der Interpolation wollte ich nur experimentieren, um zu sehen wie sich das auf die Grafik auswirkt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  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.