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

labeling einer logarithmischen achse

 

elcachon
Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 08.06.2011, 20:28     Titel: labeling einer logarithmischen achse
  Antworten mit Zitat      
Hallo leute,

Folgender Sachverhalt: csv-file einlesen und plotten und anschließend wird fft davon in eigener axis dargestellt.
Die Skalierung der x-achse ist logarithmisch(im fft-plot).
jetzt steht da immer 10^3,usw. würde gerne aber entsprechend der potenz z.B 1k für 10^3, 1M für 10^6 dastehen habe.
Ich weiß es würde darüber scho viel diskutiert nur komme ich nicht so recht voran. als ob ich ein brett vorm kopf hätte.

hab scho mit xticklabel und xtick rumgespielt, nur funktionieren tuts nicht wie es soll!

PS: Kann programmbeispiel erst morgen früh anfügen, da ich meine Dateien nicht zu Hause hab!

Bin für Anregungen dankbar!
Private Nachricht senden Benutzer-Profile anzeigen


elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 21.06.2011, 11:59     Titel:
  Antworten mit Zitat      
weiß denn wirklich gar keiner eine antwort??
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2011, 12:50     Titel: labeling
  Antworten mit Zitat      
Hi elcachon,

Es funktioniert schon mit xticklabel.

Probier mal folgendes:
Code:

x=logspace(1,6,10);
semilogx(x,log(x));
set(gca,'XTickLabel',{'10';'100';'1k';'10k';'100k';'1M'})
 

Die Anzahl Werte in der Zelle {} muss natürlich den Anzahl XTicks entsprechen.

Gruss, Georg
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 21.06.2011, 14:48     Titel:
  Antworten mit Zitat      
hallo georg,

danke erstmal für deine antwort!

So etwas ähnliches hab ich mir schon gebastelt, wenn ich ehrlich bin hab ich mein problem ein bißchen unsauber formuliert.
Bei deinem beispiel leg ich einmal meine Skalierung fest. Mein Problem, oder Herrausforderung: Ich lese datan verschiedener Größe ein und mache einen FFT plot daraus.
Da es sich bei den Daten um Signale unterschiedlicher Frequenz handelt, muss sich natürlich auch die Skalierung an der x-Achse ändern, um dass nicht immer von Hand machen zu müssen, probier ich schon seit Tagen, da irgendwie eine Funktion, die mir meine x-achse nach der größe des eingelesenen Signals anpasst.

Noch eine Idee??Smile

Lg elcachon!
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2011, 21:29     Titel: loglabel
  Antworten mit Zitat      
Hi elcachon,

Meines Wissens gibt es keine solche Funktion in Matlab. Also bleibt nur, es selbst zu programmieren:

Hier ist mein Vorschlag. Du musst dann nur noch alle möglichen Zehnerpotzenzen ergänzen. Ich hab jetzt die Bandbreite von 1 Hz bis 1 MHz abgedeckt.

Gruss, Georg

% Input: h_ax = handle der Achse, welche neu beschriftet werden soll (in der
% Regel ist das die aktuelle Achse gca)
% Aufruf z.B. mit loglabel(gca)

function f = loglabel(h_ax)

xtlab = get(gca,'xticklabel');

lab_str =[];

for iii = 1:length(xtlab)

if strcmpi(xtlab(iii),'0') % 10^0
s = '1';
elseif strcmpi(xtlab(iii),'1') % 10^1
s = '10';
elseif strcmpi(xtlab(iii),'2') % 10^2
s = '100';
elseif strcmpi(xtlab(iii),'3') % 10^3
s = '1k';
elseif strcmpi(xtlab(iii),'4') % 10^4
s = '10k';
elseif strcmpi(xtlab(iii),'5') % 10^5
s = '100k';
elseif strcmpi(xtlab(iii),'6') % 10^6
s = '1M';
end

lab_str =[lab_str; {s}];

end

set(gca,'xticklabel',lab_str)
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 22.06.2011, 08:02     Titel:
  Antworten mit Zitat      
Guten Morgen Georg,


Vielen Dank für deine Hilfe, werd ich gleich mal ausprobieren!!
Ach es wär schön wenn es bei mir auch so leicht von der Hand gehen würde! Ich vergess (oder weiß einfach noch nicht) einfach so schnell die einzelnen Befehle, muss mir da unbedingt ein System zurechtlegen, kann ja nicht immer auf euch zurückgreifen!!Smile

Schönen Tag noch

elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 22.06.2011, 08:10     Titel:
  Antworten mit Zitat      
Hallo georg nochmal kurz ich,,

was ist der Unterschied zwischen:
Code:


hab grad in der Hilfe nachgeschaut, aber was bedeutet..... TF = STRCMPI(S1,S2) compares the strings S1 and S2 and returns logical 1
(true) if they are the same except for case,........besonders der letzte teil, except for case!
Vielleicht ist es einfach noch zu früh am morgen!Wink

Danke schon mal!
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 22.06.2011, 12:10     Titel:
  Antworten mit Zitat      
Hallo Georg,

ich hoffe du kommst nochmal zurück!Smile

Dein Beispiel funktioniert super, danke nochmal. Hab mein beispiel gleich über den Haufen geworfen, habs viel zu kompliziert gelöst.

Folgendes:

Wenn ich jetzt in meinen plot hineinzoome, dann reihen sich die xticklabels aneinnander und zeigen mir dadurch ein falsches Ergebniss an der x-achse an.
welche Möglichkeit gibt es, dass sich beim zoomen die x-Achse automatisch anpasst und nicht die Inhalte des Cell-Arrays aneinanderreiht!

Vielen Dank schon mal

Lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 12:17     Titel: strcmpi
  Antworten mit Zitat      
Hi elcachon,

strcmpi steht für "strings compare insensitive", also werden zwei strings verglichen, ohne auf die Gross- und Kleinschreibung (englisch "case") zu achten. Wenn beide strings exakt dieselben Buchstaben enthalten gibt die Funktion den Wert 1 (also TRUE) zurück. Damit wäre die IF-Bedingung erfüllt.

Noch ein Tipp: Du kannst
Code:
im command promt eingeben, um schnell eine Hilfe zur Funktion zu bekommen. Wenn du mehr wissen willst, schreibe einfach
Code:
. Damit öffnet sich eine ausführliche Beschreibung, in der meistens auch Beispiele sind.

Viel Spass mit Matlab!

Georg
 
Georg J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 12:27     Titel: zoom
  Antworten mit Zitat      
Ja, das kann beim zoomen Probleme geben. Daran hatte ich nicht gedacht.

Ergänze in der Funktion ganz unten
Code:
set(gca,'XTickMode','manual')


Damit fixierst du die Beschriftung. Zwischen deinen Ticks wird kein Zahlenwert in der X-Achse angezeigt.
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 22.06.2011, 13:55     Titel:
  Antworten mit Zitat      
Hey Georg,

Ich steh in deiner Schuld!!

Vielen Dank, ich hoffe matlab geht mir von Zeit zu Zeit leichter von der Hand!

Lg elcachon
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 22.06.2011, 18:30     Titel:
  Antworten mit Zitat      
Gerne geschehen.

Und noch ein Tip: Wenn du wissen willst, was bei einer Figur oder einer Achse alles verändert werden kann, schreibe einfach

get(gca) für die Achse

bzw.

get(gcf) für die Figure

Das gibt dir ein Structure mit allen aktuellen Einstellungen.

Gruss, Georg
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.