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

3D-Plot erstellen

 

pfeili
Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 18.10.2011, 13:08     Titel: 3D-Plot erstellen
  Antworten mit Zitat      
Liebe Leute,

ich möchte gern einen 3D-Plot (am besten als Fläche) erzeugen. Dazu lese ich Daten aus einem xlsx-file ein, die ich dann plotten möchte. Hier erstmal die function:

Code:

function [ output_args ] = xls_lesen( input_args )
%liest Daten aus einer Excel-Datei ein
%   Detailed explanation goes here

clc;
format short
% Abgreifen des Input-Pfadnamens
[PathName] = uigetfile('*.xlsx','Select the xlsx-file');
% Anzeigen des Input-Pfades
pfad = [cd '\' PathName];

% Daten aus einem bestimmten Bereich holen, mit Angabe eines
% Tabellenblattindex
position_x = xlsread(pfad,1,'x2:x82');
position_y = xlsread(pfad,1,'y1:at1');
Werte = xlsread(pfad,1,'y2:at82');
% Werte im Workspace speichern
assignin('base','position_x',position_x)
assignin('base','position_y',position_y)
assignin('base','Werte',Werte)

plot3(position_x, position_y, Werte)

% Flächenplot erzeugen
% tri = delaunay(position_x, Werte);
% trisurf(tri, position_x, Werte, position_y);

end

 


Das Problem liegt an den unterschiedlichen Dimensionen:

Werte: 81x22 double-Matrix
position_x: 81x1 double
position_y: 1x22 double

Ich habe für 22 y-Werte Geschwindigkeitsprofile (in 1mm-Schritten) an der Düse aufgenommen und folglich die Matrix in der angegebenen Größe erhalten. Kann ich denn auch dann, wenn sich die Dimensionen unterscheiden einen Plot erstellen?

Derzeit liefert er folgende Fehlermeldung:

Zitat:

??? Error using ==> plot3
Vectors must be the same lengths.

Error in ==> xls_lesen at 26
plot3(position_x, position_y, Werte)


Für eure Hilfe bin ich sehr dankbar. Falls noch Angaben fehlen, gebt bitte bescheid. Vielen Dank.

pfeili
Private Nachricht senden Benutzer-Profile anzeigen


pfeili
Themenstarter

Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 18.10.2011, 13:24     Titel:
  Antworten mit Zitat      
Scheinbar muss ich meine position_x- und position_y-Variablen auf die Dimension der Matrix bringen. Ich versuche es mal.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.10.2011, 13:29     Titel:
  Antworten mit Zitat      
Die Dimension müssen passen...

Code:

Werte: 81x22 double-Matrix
position_x: 81x1 double
position_y: 1x22 double

plot3d(position_x, position_y, Werte')
% oder
plot3d(position_y, position_x, Werte)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
pfeili
Themenstarter

Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 18.10.2011, 13:35     Titel:
  Antworten mit Zitat      
Ich habe es jetzt so gemacht, den Zeilen- bzw. Spaltenvektor auf die richtige Dimension "geschmiert":

Code:

position_x = xlsread(pfad,1,'x2:x82');
position_x = kron(position_x, ones(1,22))
size(position_x)
position_y = xlsread(pfad,1,'y1:at1');
position_y = kron(position_y, ones(81,1))
size(position_y)
Werte = xlsread(pfad,1,'y2:at82');
size(Werte)
 


So funktioniert es.

Trotzdem herzlichen Dank und einen wunderschönen Tag.

pfeili
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.10.2011, 16:29     Titel:
  Antworten mit Zitat      
Hallo pfeili,

REPMAT wäre deutlich effizienter als KRON.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
pfeili
Themenstarter

Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 19.10.2011, 08:02     Titel:
  Antworten mit Zitat      
Danke. Probiere ich noch aus.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.10.2011, 09:32     Titel:
  Antworten mit Zitat      
Hast du meinen Vorschlag überhaupt probiert?

Bei den angegeben Dim. aus dem ersten Post war doch alles i.O. nur die Übergabe an plot3d() war falsch...

Code:

 plot3d(position_x, position_y, Werte')
% oder
 plot3d(position_y, position_x, Werte)
 


In meinen Augen ist Repmat oder Kron doch überflüssig.
Private Nachricht senden Benutzer-Profile anzeigen
 
pfeili
Themenstarter

Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 20.10.2011, 11:56     Titel:
  Antworten mit Zitat      
Hallo DSP,

kann es sein, dass es bei dir plot3() statt plot3D() heißen muss?. Letzteres kennt zumindest mein Matlab 2009b nicht.

Beste Grüße

pfeili
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.10.2011, 16:47     Titel:
  Antworten mit Zitat      
Sorry...hast recht. Es heißt plot3(). Aber die Übergabeparameter stimmen so Wink
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.