Matlab畫colormap的一種色彩搭配方法


聲學與振動數據分析經常需要畫colormap,來識別是結構頻率共振,還是激勵源階次問題,比如圖1,橫坐標表示電機的轉速,負值表示CW(順時針)方向轉動,正值表示CCW逆時針方向轉動。Y軸表示對應的聲音或振動的頻率值,顏色(Z軸)表示對應聲音或振動不同轉速不同頻率下的幅值(強度)。

 

 圖(1)

那么如何畫圖1 呢,使用imagesc比較容易得到一個彩圖,如圖2所示。

圖(2)

Matlab也內置了一些色階卡,但是漸變色階標尺不太容易操作,所使用的漸變顏色組合感覺使用起來也不太習慣。

如何定制自己的colormap 的colorbar呢?如何能達到圖1的效果呢?下面做一些嘗試(代碼):

clc;
clear;
close all;
導入數據
load('D:\Matlab\Bing_s_Matlab_Projects\13_build_colormap\SOFA_data.mat');
%fmax=2000Hz
%f_resl=8Hz
%speed range = -2300rpm:10rpm:2300rpm
f1=figure;
創建一個colormap使用五種顏色漸變
定義自己所取的六個色階點
RGB 紅 | 綠 | 藍 值
黑色 000 000 000
藍色 000 000 255
品紅 255 000 255
純紅 255 000 000
黃色 255 255 000
白色 255 255 255
mycolorpoint= [0 0 0; %黑
0 0 255;     %藍
255 0 255;    %品紅
255 0 0;     %純紅
255 255 0;    %黃
255 255 255] ;  %白
定義顏色標尺取值范圍:
cmin= 10 ;
cmax= 40 ;
clims=[cmin cmax]; % 定義顏色標尺范圍
定義色階點
mycolorposition=linspace(cmin,cmax,6);
定義插值個數100個
inp_100=linspace(cmin,cmax,100); % 插值數目100個
通過6個色階點來插值100個顏色漸變標尺
mycolormap_r=interp1(mycolorposition,mycolorpoint(:,1),inp_100,'linear','extrap');
mycolormap_g=interp1(mycolorposition,mycolorpoint(:,2),inp_100,'linear','extrap');
mycolormap_b=interp1(mycolorposition,mycolorpoint(:,3),inp_100,'linear','extrap');
mycolor=[mycolormap_r',mycolormap_g',mycolormap_b']/256;
mycolor=round(mycolor*10^4)/10^4;%保留4位小數
設置橫坐標,縱坐標
%%-------------設置坐標-----------------
X=[-2300 2300];
Y=[0 2000];
% -----------設置坐標-------------
畫出圖形:
imagesc(X,Y,SOFA_data,clims)
設置Y方向
ax = gca;
ax.YDir='normal'; % 設置圖片Y的方向
畫出標尺
colormap(mycolor);
c=colorbar;
c.Label.String = 'dB(A)';
xlabel('motor speed/rpm')
% xlabel2('2')
ylabel('freqency /Hz')
 
 圖(3)
生成的圖形如圖3所示。

參考:

1. CSDN博主「hyhhyh21」:https://blog.csdn.net/weixin_42943114/article/details/81811556


 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM