How to select the range of data based on threshold range of our own choice?

2 views (last 30 days)
Dear MATLAB experts,
I want to use only the points corresponding to relatively high amplitudes? (e.g., try -10 to 0 dB or -20 to -10 dB or -30 to -20 on the normalized plots).
In attached imaging data output which veries from -45 to 0 dB.
I want to make 3 classes and plot data in with 3 classes and 3 colors.
.
I lookforward to receive your suggestions. I tried an approach but it gives logical output which is not suitable for my case.
Tahnk you!
  2 Comments
Image Analyst
Image Analyst on 20 Sep 2022
You can adapt the colormap to have only 3 colors. Please attach your original image varible in a .mat file if you want anybody to try anything. What do you want to be the color if the value is outside your ranges? Why do your three ranges (-10 to 0 dB, or -20 to 10 dB, or -30 to -10) overlap? For example a -15 : which class should it be in the second or the third???
Amjad Iqbal
Amjad Iqbal on 20 Sep 2022
Sorry, for my mistake.
I corrected the ranges (-10 to 0 dB or -20 to -10 dB or -30 to -20) in three classes now, as high, medium and low respectively.
Also the .mat file is attached for reference.
load('output_classes.mat'); % data
imagesc(x_vect, y_vect,20*log10(abs(S_VH)/max(max(abs(S_VH)))),[-45 0]),...
axis('equal'),axis('tight'),title('Output'),colormap('jet'),...
colorbar,set(gca,'FontSize',14),grid;
Please have a look, Thank you!

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 20 Sep 2022
Try this:
load('output_classes.mat'); % data
intensity = 20*log10(abs(S_VH)/max(max(abs(S_VH))));
imagesc(x_vect, y_vect, intensity,[-45 0]);
axis('equal');
axis('tight');
title('Output');
cmap = [0,0,0;
1,0,0;
0,1,0;
0,0,1
]
cmap = 4×3
0 0 0 1 0 0 0 1 0 0 0 1
colormap(cmap);
colorbar;
caxis([-40, 0]);
set(gca,'FontSize',14)
grid;

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!