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

Bestimmte Messdaten plotten

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2012, 13:46     Titel: Bestimmte Messdaten plotten
  Antworten mit Zitat      
Hallo zusammen,

Ich habe eine große Matrix von der ich bestimmte Spalten in 3D geplottet haben möchte: zbsp Spalte 1,4,8,12 etc als z Achse und spalte 2,5,9,13 als y achse
die verschiedenen Plots sollen dann über der x Achse aufgetragen werden.
Wie müsste ein Code aussehen der das automatisch macht.
also zbsp x=1+i, y=2+i, i=4 .

Vielen Dank für eure Hilfe.


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2012, 14:16     Titel:
  Antworten mit Zitat      
Hallo, Verstehe nicht, wo scheitert es denn?
Code:

M= rand(12,12);
plot3(M(:,1:3:end),M(:,2:3:end),M(:,3:3:end),'*')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2012, 14:34     Titel:
  Antworten mit Zitat      
Es scheitert daran dass ich nicht weiss wie ich mehrere Plots automatisiert in 3d darstelle.

Ich habe eine matrix (100 x 500), und möchte jede 1 und 1+ite spalte als y achse und jede 2 und 2+ite spalte als z Achse haben (i=5 zbsp). Jeder Auslesevorgang soll dann parallel auf der x Achse dargestellt sein.

Am besten wäre das ganze automatisiert sodass ich nicht alles 200 mal abtippen muss.
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2012, 17:08     Titel:
  Antworten mit Zitat      
Zitat:
Jeder Auslesevorgang soll dann parallel auf der x Achse dargestellt sein.

Was heißt das? Verstehe ich nicht was du damit meinst. Beispiel Bitte.

also abtippen muss du nichts, du kannst ja alles in FOR Schleife packen,
vorher HOLD ON anwenden, um die Axes von dem Überschreiben zu schützen

i ist dein Zähler? Oder ist das X?
Den Rest hast du ja schon vorgegeben

Code:

figure
M=rand(100,500);
hold on
X = ones(100,1)*5;
for i=1:2:size(M,2)-1
   Y = M(:,i);
   Z = M(:,i+1);
   plot3(X,Y,Z,'r')
end
hold off
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2012, 20:55     Titel:
  Antworten mit Zitat      
Also Vielen dank schon mal,
Im Anhang ist ein Teil der Matrix die ich versuche auszuwerten.

Hier mein Code:
Code:

clc
clear all


path = uigetdir(pwd,'Select xls directory');
path = [path filesep];
file_all = dir(path);
file = file_all([file_all.isdir] == 0);

P = cell(1,numel(file));


if ~isempty(file)
    for k = 1:numel(file)
        [pathstr, name, ext] = fileparts([path file(k).name]);
        if strcmp(ext,'.xls')
            P{k} = xlsread([path file(k).name],1 );
        end
    end
end

P(cellfun(@(x) isempty(x),P)) = [];
M = cell2mat(P);

x = M(:,2:13:end);
y = M(:,5:13:end);
z = M(:,1);

hold
plot3(x,y,z,'.')
hold off

 


Wie man sieht werden 4 Plots ausgegeben, diese möchte ich lediglich auf der Z-Achse hintereinander gelegt haben.
Jedoch habe ich keine Idee wie ich das mache.

Besten Dank für die Hilfe

matrix.txt
 Beschreibung:

Download
 Dateiname:  matrix.txt
 Dateigröße:  153.15 KB
 Heruntergeladen:  372 mal
matrix.txt
 Beschreibung:

Download
 Dateiname:  matrix.txt
 Dateigröße:  153.15 KB
 Heruntergeladen:  349 mal
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 05.06.2012, 14:11     Titel:
  Antworten mit Zitat      
Also die Dimensionen x,y, z, müssen gleich sein
also musst z, künstlich mit REPMAT aufblasen

Code:

x = M(:,2:13:end);
y = M(:,5:13:end);
z = repmat(M(:,1),1,size(y,2));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2012, 19:07     Titel:
  Antworten mit Zitat      
hm die Plots liegen aber immer noch in einer Ebene
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 05.06.2012, 19:30     Titel:
  Antworten mit Zitat      
Ach so stimmt mein Fehler, habe falsch gelesen
dann so:
Code:

x = M(:,2:13:end);
y = M(:,5:13:end);
z = repmat(M(:,1),1,size(y,2))+cumsum(ones(size(y)),2)
 
 
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.