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

Verlinken unterschiedlich skalierter x-Achsen

 

Knygs
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 11.06.2015, 13:01     Titel: Verlinken unterschiedlich skalierter x-Achsen
  Antworten mit Zitat      
Hi Leute,

ich stehe vor folgendem Problem:

Ich habe einen Plot mit Subplots. Bei einem Subplot ist die x-Achse z.B. bis 500 in 500 Schritten (Zeitsegmente) während bei einem anderen die x-Achse nur bis z.B. 20s geht, jedoch mit einer Auflösung von 10 Mhz. Die Länge der geplotteten Vektoren variiert also ebenfalls stark.

Mit Linkaxes wird meine "kürzere" x-Achse immer auf die andere Achse skaliert. Weiß jemand eine Möglichkeit die Achsen zu verlinken ohne, dass die Skalierung gleich sein muss?
Ich könnte zwar die Segment-Achse durch die Zeitachse ersetzen, würde das aber wegen Übersichtlichkeitsgründen gerne vermeiden.

viele Dank!
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: 13.06.2015, 00:12     Titel: Re: Verlinken unterschiedlich skalierter x-Achsen
  Antworten mit Zitat      
Hallo Knygs,

Welche Eigenschaften der AXES sollten denn verlinkt werden? Wozu dient LINKAXES bei Dir?

Zitat:
Mit Linkaxes wird meine "kürzere" x-Achse immer auf die andere Achse skaliert.

Genau das ist ja der Sinn dieses Befehls.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 19.06.2015, 10:49, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Knygs
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 18.06.2015, 15:51     Titel:
  Antworten mit Zitat      
Hi Jan,

danke für deine Antwort und sorry, dass meine Antwort so lange auf sich warten ließ.

ich will prinzipiell schon die gleiche Funktion des Befehls benutzen.

Bei mir ist es nur so:

Ich habe eine Messung mit mehreren Variablen.
Die Variable (Motor-Segmente) hat eine nicht konstante Auflösung, da sie von der Drehzahl abhängt.
Andere Messgrößen, wie strom, spannung etc zeichne ich mit 10 Mhz auf.

Durch Berechnungen erhalte ich einen Plot, der über jeweils ein Segment einen konstanten Wert hat --> Plot mit Segmenten als x-Achse.
Da dieser Plot jedoch auch von den anderen Messgrößen abhängt will ich den Verlauf dieser in einem Subplot darunter plotten. Diesen Plot würde ich, zur Übersichtlichkeit und besseren Nachvollziehbarkeit, aber gerne in Abhängigkeit von der Zeit darstellen.

D.h. ich habe direkt nach dem Plot-Befehl zwei Subplots, die berechnungstechnisch voneinander abhängen, aber die eine x-Achse geht z.B. von 0 bis 30 mit 100000 Punkten und der andere Subplot von 0 bis 1000 mit 1000 Punkten.
mit dem normalen linkaxes wird ja dann normalerweise die Achse von 0 bis 30 auf 0 bis 1000 aufgeweitet, dann stimmt jedoch der Zusammenhang nicht mehr und der eine Plot wird zusammengestaucht, das will ich vermeiden.

Ich habe auch schon versucht eine zusätzliche x-Achse einzufügen, das funktioniert aber leider auch nicht, da linkaxes anscheinend die zusätzliche x-Achse nicht erkennt.

so sieht mein Problem aus:

Code:
% Beispieldaten
time_seg=1:0.5:30;
time_seg(15:end-1)=time_seg(15:end-1)-0.01;  % soll variable Zeitabhängigkeit der Segmente darstellen
time_strom=1:0.25:30;
schaltzeit=sin(time_seg).*sqrt(time_seg);
strom=cos(time_strom).^2+3;

plot_nr=1;
figure(plot_nr);
set(gcf,'units','centimeters')          
set(gcf,'Position',[0,1,30,20])
set(gcf,'Visible','on')

hsub(1,1)=subplot('Position',[0.05 0.5 0.8 0.45]);
hold on
grid on

plot(schaltzeit)

hsub(1,2)=subplot('Position',[0.05 0.15 0.8 0.3]);
hold on
grid on
plot(time_strom,strom);

% linkaxes(hsub,'x');


hier bräuchte ich dann sozusagen die verknüpfung der x-achsen, dass beim Zoomen die obere 20 auf höhe der unteren 10 bleibt, damit ich sowohl die Zeit als auch das segment ablesen kann, aber bei linkaxes wird der untere plot zusammengeschoben.

viele Grüße
Tobi
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: 19.06.2015, 12:03     Titel:
  Antworten mit Zitat      
Hallo Knygs,

Sorry, ich kann Dir nicht folgen.

Zitat:
ich will prinzipiell schon die gleiche Funktion des Befehls benutzen.

Von welchem Befehl sprichst Du?

Zitat:
Die Variable (Motor-Segmente) hat eine nicht konstante Auflösung, da sie von der Drehzahl abhängt.

Was bedeutet hier genau "Auflösung"?

Zitat:
Durch Berechnungen erhalte ich einen Plot, der über jeweils ein Segment einen konstanten Wert hat --> Plot mit Segmenten als x-Achse.

Ich verstehe nicht, was ein Segment ist. Für die eigentliche Aufgabe spielt die Bedeutung der Zahlen keine Rolle, oder? Für Matlab sind das alles Zahlen.

Zitat:
D.h. ich habe direkt nach dem Plot-Befehl zwei Subplots, die berechnungstechnisch voneinander abhängen, aber die eine x-Achse geht z.B. von 0 bis 30 mit 100000 Punkten und der andere Subplot von 0 bis 1000 mit 1000 Punkten.


Zitat:
mit dem normalen linkaxes wird ja dann normalerweise die Achse von 0 bis 30 auf 0 bis 1000 aufgeweitet, dann stimmt jedoch der Zusammenhang nicht mehr und der eine Plot wird zusammengestaucht, das will ich vermeiden.

Aber das ist doch gerade der Sinn von LINKAXES. Mir wird nicht klar, wieso Du diesen Befehl einsetzen möchtest um etwas zu tun, für das der Befehl nicht da ist.
Bitte erkläre, welche Eigenschaften Du überhaupt wobei verlinken möchtest.

Zitat:
hier bräuchte ich dann sozusagen die verknüpfung der x-achsen, dass beim Zoomen die obere 20 auf höhe der unteren 10 bleibt, damit ich sowohl die Zeit als auch das segment ablesen kann, aber bei linkaxes wird der untere plot zusammengeschoben.

Das verstehe ich nicht. Die oberer 20 auf Höhe der unteren 10?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 19.06.2015, 12:44     Titel:
  Antworten mit Zitat      
Hallo Jan,

Zitat:
Von welchem Befehl sprichst Du?


von linkaxes, dem befehl, den du in deiner antwort davor auch schon gemeint hast.

Zitat:
Was bedeutet hier genau "Auflösung"?


Auflösung bedeutet die zeitliche Auflösung, mit der das Messsignal aufgezeichnet wurde.

Zitat:
Ich verstehe nicht, was ein Segment ist. Für die eigentliche Aufgabe spielt die Bedeutung der Zahlen keine Rolle, oder? Für Matlab sind das alles Zahlen.


Stimmt, die Bedeutung der Zahlen spielt keine Rolle, aber nachdem mein erster Versuch das Problem kurz und knapp zu erklären nicht geklappt hat habe ich es so versucht anschaulicher zu gestalten.
Ein Segment ist ein Bereich über eine bestimmte Zeit, wobei ich bei einem Plot als x-Achse die Segmentanzahl anstatt der Zeit benutze. Daher die unterschiedlichen x-Achsen.

Zitat:
Aber das ist doch gerade der Sinn von LINKAXES. Mir wird nicht klar, wieso Du diesen Befehl einsetzen möchtest um etwas zu tun, für das der Befehl nicht da ist.
Bitte erkläre, welche Eigenschaften Du überhaupt wobei verlinken möchtest.


Zitat:
Das verstehe ich nicht. Die oberer 20 auf Höhe der unteren 10?


Das war die ursprüngliche Frage, da ich den Effekt von Linkaxes (bei zoomen des einen Subplots gleichzeitiges zoomen im andern plot zu gleichem bereich, eben das verknüpfen/verlinken der Achsen) nutzen möchte, aber das eben mit linkaxes so nicht funktioniert. Der Unterschied ist bei mir nämlich der, dass meine x-Achsen unterschiedlich große Bereiche umfassen, die ich aber dennoch miteinander verlinken will.
Das heißt, wenn die eine Achse von 0 bis 10 geht und die andere von 0 bis 20, dann sollen bei den Achsen die 10 und die 20 miteinander verknüpft/verlinkt werden (und verhältnismäßig alle anderen Werte) damit ich beim Hineinzoomen verhältnismäßig/maßstabsgetreu auf den gleichen Bereich in beiden Plots komme.

Vielleicht ist es besser verständlich, wenn man sich die x-Achsen als unterschiedliche Maßstäbe vorstellt, Faktor dazwischen egal, aber >1.
D.h. wenn man in der einen Ansicht hineinzoomt, zoomt man maßstäblich auch in der anderen Ansicht/Achse hinein, aber durch den anderen Maßstab werden nunmal andere maßstäbliche Größen angezeigt, die aber trotzdem mit den ersten Werten zusammenhängen/verknüpft sind.

vg Knygs
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.