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

Achsenskalierung

 

ichris6

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 15:37     Titel: Achsenskalierung
  Antworten mit Zitat      
Hallo zusammen,
ich habe mal wieder ein vermutlich kleines Problem. Dabei handelt es sich um folgendes:

Ich lese Daten von einer CCD-Zeile und gebe mir diese graphisch aus über plot() aus. Über xlim skaliere ich auf die benötigten Werte.

Jetzt möchte ich den einzelnen Werten Wellenlängen zuordnen und die dann als x-Achsenskalierung benutzen. habe das ebenfalls mit xlim versucht aber das klappt nicht

Als Bsp.
512 Werte werden den Positionen 0-512 zugeordnet. Man erhält eine Kurve. Die zu jeder Position dazugehörigen Wellenlängen liegen zwischen 490-900. Jetzt soll jede Position durch die jeweilige Wellen ersetzt werden, aber die Kurve soll sich nicht ändern, sondern einfach nur die 0 gegen die 490 getauscht werden usw.

Hat jemand ne Idee??

Vielen Dank, Chris


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.05.2010, 16:14     Titel:
  Antworten mit Zitat      
Hallo,

da arbeitest du wohl am besten mit den Achsenbeschriftungen.
Code:
set(gca, 'XTickLabel', ...)


z.B.
Code:
plot(0:10)
set(gca, 'XTickLabel', num2str((11:21)'))


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 07:50     Titel:
  Antworten mit Zitat      
Morgen, vielen Dank für die Antwort, aber es leider noch nicht das was ich benötige
 
joanna
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 26.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 09:41     Titel:
  Antworten mit Zitat      
Hallo,

verstehe ich das richtig? Du möchstest sozusagen die x-Achse nicht von 0 bis 512 sondern von 490 bis 900 "beschriften"?

Ich weiß nicht ob das so funktioniert und ob das ein guter Programmierstil ist, aber könntest du dir nicht einen Vektor von 490 bis 900 mit 512 Werten erzeugen und dann deine Kurve dagen auftragen lassen?
Bsp.
Code:

x = linspace(490, 900, 512);
plot(x, deineWerte);
 


Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.06.2010, 09:58     Titel:
  Antworten mit Zitat      
Hallo

nach deiner Frage zu beurteilen, benötigst du genau das was Harald vorgeschlagen hat. Hast du denn Harald's Beispiel nachvollzogen?
Also bitte erklären warum es dir nicht passt? Und was dir nicht passt?
Private Nachricht senden Benutzer-Profile anzeigen
 
quant82
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 30.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 10:18     Titel:
  Antworten mit Zitat      
joa andererseits könntest du deine x-werte mit einer zahl multiplizieren und sie so projezieren wobei ich die erstere lösung auch besser finde...
Private Nachricht senden Benutzer-Profile anzeigen
 
ichris6

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 12:21     Titel:
  Antworten mit Zitat      
Hi Leute,
ansatzweise klappt es mit Harald seiner Variante.
Wenn ich jedoch genau seine Methode verwende dann wird die Skalierung falsch. Hab es so versucht, aber es ist immer noch nicht ganz korrekt.

Code:

xLabel ('Pixel');
xlim([0 512]); % damit nur die 512 Werte geplottet werden
set(gca, 'XTickLabel', 0:50:512); % damit überhaupt alle 512 abgebildet werden. Ohne die bekomme ich nur Skalierungen bis 10
 


Das Gleiche soll mit den Wellenlängen passieren. Da soll aber jeder der 512 Werte durch den entsprechenden Wellenlängenwert ersetzt werden.

Code:

xLabel ('Pixel');
xlim([0 512]); % damit nur die 512 Werte geplottet werden
set(gca, 'XTickLabel', Wellenlänge(1):50:Wellenlänge(512)); % Hier bekomme ich aber keine genau Übersetzung von Pixel zu Wellenlänge
 
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.06.2010, 12:28     Titel:
  Antworten mit Zitat      
ichris6 hat Folgendes geschrieben:
Hi Leute,
Code:

xLabel ('Pixel');
xlim([0 512]); % damit nur die 512 Werte geplottet werden
set(gca, 'XTickLabel', Wellenlänge(1):50:Wellenlänge(512)); % Hier bekomme ich aber keine genau Übersetzung von Pixel zu Wellenlänge
 



warum so und nicht so:

Code:

xLabel ('Pixel');
xlim([0 512]); % damit nur die 512 Werte geplottet werden
set(gca, 'XTickLabel', Wellenlänge(1:50:512));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
ichris6

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 12:36     Titel:
  Antworten mit Zitat      
Vermutlich weil ich ne Depp bin.

Vielen Dank für die Info Smile
 
ichris6

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 12:50     Titel:
  Antworten mit Zitat      
Leider passt es immer noch nicht ganz genau.
Pixel 1 und 512 stimmen mit den Wellenlängen überein.
Alle dazwischen sind um ein paar nm verschoben, stimmen also nicht ganz mit den errechneten Werten überein.
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.06.2010, 12:54     Titel:
  Antworten mit Zitat      
Kannst du lauffähigen Beispiel mit deinen Werten erstellen z.B mit 50 Werten, damit wir den Fehler nachvollziehen können?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.06.2010, 13:06     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht nochmal das Gesamtbild: mit

Code:
kannst du steuern, wo die Markierungen ("Ticks") auf der x-Achse sind. Mit

Code:
set(gca, 'XTickLabel', ...)
kannst du steuern, wie diese Markierungen beschriftet werden. Du kannst also z.B. den Wert 1 mit 11 beschriften, wie in meinem Kurzbeispiel.

Damit hast du die Möglichkeit, alles denkbare zu kontrollieren: was geschrieben wird, und wohin.

Wenn das nicht reicht, brauchen wir, wie von denny gesagt, ein lauffähiges Beispiel, in dem das Problem auftritt.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 13:11     Titel:
  Antworten mit Zitat      
verstehe nicht ganz genau was du damit meinst.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.06.2010, 13:15     Titel:
  Antworten mit Zitat      
Zitat:
verstehe nicht ganz genau was du damit meinst.


Was genau verstehst du nicht?

Zur Not wie gesagt ein lauffähiges Beispiel schicken.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2010, 14:22     Titel:
  Antworten mit Zitat      
Ihr seit klasse Männer,
hab es mit den Infos hinbekommen. Keine Verschiebung mehr.
Sollte ich widererwartend noch Schwierigkeiten haben dann melde ich mich.

Besten Dank noch mal, Gruß Chris
 
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 - 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.