imagesc() Y Axis Log Scale Not Working (Help!)
Show older comments
I have a matrix (image_spectrogram) which representing a image.
Using the imagesc function, I can shown the image.
eg: imagesc(x,y,log10(image_spectrogram+1));
I am trying to set the y axis to log scale, so I typed:
set(gca,'YScale','log','YDir','normal','YTick',[0.1,100,500,1000,5000]);
However, it turns out that this is a fake log scale.
The YScale did turn into log scale, but the image is absolutely identical to the linear one.
Two images are attached as following.
How to get a real log scale (y axis) image, please help me! This is the linear image:

This is the Y axis log scale image:

They are same except the fake log scale Y axis.
My original code is :
imagesc(x,y,log10(image_spectrogram(1:floor(Fs/2),:)+1));
cmap = colormap('gray');
colormap(flipud(cmap));
caxis(log10([0.9,max(image_spectrogram(:))*0.2]));
set(gca,'YScale','log','YDir','normal','YTick',[0.1,100,500,1000,5000]);
Help!
Accepted Answer
More Answers (3)
Oliver Woodford
on 17 Sep 2015
0 votes
If you want to avoid pcolor, you can resample the image at the log scale locations, then use imagesc to display that.
1 Comment
Peter Jack
on 6 Dec 2018
can you tell me how we can do that i.e resample existing image cdata at log scale location?
Constantino
on 1 Nov 2018
I cannot get to implement correctly neither of the two solutions given here. I just wanted to make a quick image from a "rows x columns" matrix, where the Y axis must be plotted in log scale. I thought it would be simple, but it seems matlab has so much complexity that my approach is not working.
image(My2DMatrix,'CDataMapping','scaled')
works fine. I can change the color scale, axes ranges, and everything through the menus from the created image. However, transforming the image so it displays a log Y axis does nothing to the image. Maybe I need another type of plot? I'm a complete newbe in matlab. Have worked with other languages but it seems matlab is not so easy as other programming environments.
Constantino
on 2 Nov 2018
0 votes
Ok, I solved my problem using contourf, which handles better my type of data
Categories
Find more on Graphics Performance in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!