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

Log-Skala in Plot Colorbar

 

HansiHans
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 10.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2014, 09:53     Titel: Log-Skala in Plot Colorbar
  Antworten mit Zitat      
Hi Leute,
ich möchte in meine Grafik eine log-colorbar haben.
Habe es jetzt wie folgt probiert.

Code:
hold on; figure
pcolor(C)
shading flat
caxis([1e2 1e7]), cbar1 = colorbar;
set(cbar1,'YScale', 'log');
title('Log-Skala')
imshow(C);
 


Habe den Code aus dem Link:
https://www.mathworks.com/matlabcen.....reader/view_thread/152310


Das Programm liefert mir aber jetzt folgenden Fehler:

Error using matlab.graphics.illustration.ColorBar/set
There is no YScale property on the ColorBar class.

Error in AUTOKORRELATIONPEAK (line 14)
set(cbar1,'YScale', 'log');

Error in Autokorrel (line 20)
G(i)=AUTOKORRELATIONPEAK(Raw_Img);



Kann mir da jemand weiterhelfen?

Gruß
Hans
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: 17.11.2014, 13:19     Titel:
  Antworten mit Zitat      
In der Matlab Version 2014a wird der Befehl fehlerfrei ausgeführt.

Fehlermeldung ist ja eindeutig...die Eigenschaft 'YScale' gibt es in deiner Version von colorbar nicht.

Schau dir mal den 3. Post im Link an. Dort wird eine Alternative in Form der Funktion

Code:
function cbar = colorbar_log(my_clim)


vorgeschlagen.
Private Nachricht senden Benutzer-Profile anzeigen
 
HansiHans
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 10.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2014, 07:55     Titel:
  Antworten mit Zitat      
Du meinst praktisch diesen Befehl? Dort kommt aber auch wieder YScale vor.

Code:
function cbar = colorbar_log(my_clim)
%COLORBAR_LOG Apply log10 scaling to pseudocolor axis
% and display colorbar COLORBAR_LOG(V), where V is the
% two element vector [cmin cmax], sets manual, logarithmic
% scaling of pseudocolor for the SURFACE and PATCH
% objects. cmin and cmax should be specified on a LINEAR
% scale, and are assigned to the first and last colors in
% the current colormap. A logarithmic scale is computed,
% then applied, and a colorbar is appended to the current
% axis.
%
% Written by Matthew Crema - 7/2007

% Trick MATLAB by first applying pseudocolor axis
% on a linear scale
caxis(my_clim)

% Create a colorbar with log scale
cbar = colorbar('Yscale', 'log');

% Now change the pseudocolor axis to a log scale.
caxis(log10(my_clim));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
HansiHans
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 10.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2014, 07:59     Titel:
  Antworten mit Zitat      
Das Problem ist ja, er macht es mir für mein erstes Bild aber für meine Weiteren dann nichtmehr.
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.11.2014, 12:38     Titel:
  Antworten mit Zitat      
Evtl. hilft dir ja folgender Hinweis des Autors der Funktion:

Zitat:
The trick is to be savvy enough to stay away from the CAXIS and COLORBAR commands once this function is called.


Also die Funktion nur einmal benutzen und nicht bei jedem hold on. Habe es aber nicht getestet.
Private Nachricht senden Benutzer-Profile anzeigen
 
HansiHans
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 10.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2014, 13:42     Titel:
  Antworten mit Zitat      
mh weiß leider nicht wie ich das einbauen soll...
meine funktion wird in einer for-schleife aufgerufen von bildern 1-59
Ich möchte dann das Bild C darstellen lassen mit einer log-Skala
mit den Werten 1,10,100,1000,10000,100000,1000000
Soll ich die "Funktion" dann in mein Hauptprogramm praktisch schreiben?
Sorry bin leider ein totaler Anfänger auf dem Gebiet.



Code:
function [PeakAutocorr]=PeakA(I)

Raw_Img=rgb2gray(I);
G=fspecial('gaussian',[5 5],2);
Raw_Img=imfilter(Raw_Img,G,'same');
B=double(Raw_Img);  %In double umändern
C=xcorr2(B);        %Autokorrelation mit Bild selbst


%%Hier bilder mit Log Skala anzeigen lassen



end
 
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: 24.11.2014, 11:34     Titel:
  Antworten mit Zitat      
Ich habe die Funktion selbst nicht getestet. Aber wenn du schon festdefinierte Werte für die Skala in der Colorbar hast, warum setzt zu sie dann nicht manuell?

Code:

cbar1 = colorbar;
set(cbar1,'Ticks', [1,10,100,1000,10000,100000,1000000]); % Einteilung der Skala
set(cbar1,'TicksLabels', {'1e0','1e1','1e2','1e3','1e4','1e5','1e6',}); % Beschriftung der Skala
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Georggg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2014, 13:09     Titel:
  Antworten mit Zitat      
Hallo DSP,

sehe ich das richtig, dass der Befehl: cbar1=colorbar; die Colorbar in das Bild einfügt? Möchte ich also ein Bild mit einer Colorbar ausstatten, mit den angegebenen Werten schreibe ich also praktisch:

[code]
imread(I);
figure, cbar1=colorbar;
set(cbar1,'Ticks',[1, 10, 100, 1000, 10000, 100000, 1000000]);
set(cbar1,'TicksLabels', {'1e0', '1e1', '1e2','1e3','1e4','1e5','1e6',});
imshow(I);
[code]

ist das so korrekt? Habe im Moment noch kein Matlab aber versuche schon ein bisschen einzusteigen.

Mfg
Georg
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 25.11.2014, 13:44     Titel:
  Antworten mit Zitat      
Hallo,

das erzeugt die colorbar und ein colorbar Object Namens cbar1, mit dem man dann die Eigenschaften der colorbar mittels set verändern kann.

Code:


Allerdings musste ich gerade feststellen, dass mein Code gar nicht funktioniert. In v2014a sind die Eigenschaft anders benannt als in v2014b

Code:
cbar1 = colorbar;
set(cbar1,'YTick', [1,10,100,1000,10000,100000,1000000]); % Einteilung der Skala
set(cbar1,'YTickLabel', {'1e0','1e1','1e2','1e3','1e4','1e5','1e6',}); % Beschriftung der Skala  


Während YTickLabel so verändert werden können, kann die Einteilung der Schrittweite Ytick so nicht geändert werden. Warum weiß ich allerdings auch nicht.

Allerdings funktioniert der Befehl

Code:
set(cbar1,'YScale', 'log');


sehr wohl in v2014a. Nur anscheinend nicht in älteren Matlab Version.
Private Nachricht senden Benutzer-Profile anzeigen
 
Georggg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2014, 14:03     Titel:
  Antworten mit Zitat      
Hättest du eine alternative für die Version R2014b?
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 25.11.2014, 14:10     Titel:
  Antworten mit Zitat      
Alternative für was? In v2014b heißen die Eigenschaften so:

Code:

cbar1 = colorbar;
set(cbar1,'Ticks', [1,...]); % Einteilung der Skala
set(cbar1,'TickLabels', {'...','...',...}); % Beschriftung der Skala
 


Siehe hier
Private Nachricht senden Benutzer-Profile anzeigen
 
HansiHans
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 10.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2014, 17:37     Titel:
  Antworten mit Zitat      
Hi,

ich benutze auch Matlab R2014b.
Habe jetzt mal diesen Befehl ausprobiert:

Code:
cbar1 = colorbar;
I=imread('C:\Users\Hans\Desktop\Matlab Programm\Messung 3 Papier\Papier1_30.bmp');
G=fspecial('gaussian',[5 5],2);
Raw_Img=imfilter(I,G,'same');
B=double(Raw_Img);  %In double umändern
C=xcorr2(B);  


cbar1 = colorbar;
set(cbar1,'Ticks', [1,10,100,1000,10000,100000,1000000]); % Einteilung der Skala
set(cbar1,'TickLabels', {'1','10','100','1000','10000','100000','1000000'}); % Beschriftung der Skala
hold on; imshow(C);


Er gibt mir aber folgende Skala in meinem Figure aus. (siehe Anhang LogSkala). Kannst du mir sagen was ich falsch mache?
Wenn ich per Hand die Colorbar änder, so dass sie bis 1e7 reicht sieht das ganze dann so aus(siehe Anhang LogSkala Hand)

Bin dir sehr dankbar für deine Hilfe.

Gruß
Hans

Log Skale Hand.PNG
 Beschreibung:

Download
 Dateiname:  Log Skale Hand.PNG
 Dateigröße:  99.58 KB
 Heruntergeladen:  475 mal
LogSkala.PNG
 Beschreibung:

Download
 Dateiname:  LogSkala.PNG
 Dateigröße:  37.13 KB
 Heruntergeladen:  519 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: 26.11.2014, 12:02     Titel:
  Antworten mit Zitat      
Leider weiß ich nicht wie ich dir weiterhelfen kann. Ich habe kein R2014b und kann es daher auch nicht testen. In R2014a führt folgender Code

Code:

cbar1 = colorbar;
set(cbar1,'YTick', [1,10,100,1000,10000,100000,1000000]); % Einteilung der Skala
set(cbar1,'YTickLabel', {'1','10','100','1000','10000','100000','1000000'}); % Beschriftung der Skala
 


bei mir zu ähnlichen Fehlern in der Skala wie in deinem erstem Bild. Erst ein zusätzliches

Code:
set(cbar1,'YScale', 'log');


stellt die Ticks richtig dar. Warum aber eine colorbar in R2014b keine Einteilung in linear und log hat, weiß ich auch nicht. Wenn die figure geöffenet ist, dann öffne mal unter View -> den Property Editor und dann doppelklick auf die Colorbar. Nun auf "More properties"...gibt es dort irgendeine Eigenschaft mit "Scale"?
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.