声学与振动数据分析经常需要画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

.rtcContent { padding: 30px }
.CodeBlock { background-color: rgba(247, 247, 247, 1); margin: 10px 0 }
.S0 { border-left: 1px solid rgba(233, 233, 233, 1); border-right: 1px solid rgba(233, 233, 233, 1); border-top: 1px solid rgba(233, 233, 233, 1); border-bottom: 0 none rgba(0, 0, 0, 1); border-radius: 4px 4px 0 0; padding: 6px 45px 0 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }
.S1 { border-left: 1px solid rgba(233, 233, 233, 1); border-right: 1px solid rgba(233, 233, 233, 1); border-top: 0 none rgba(0, 0, 0, 1); border-bottom: 0 none rgba(0, 0, 0, 1); border-radius: 0; padding: 0 45px 0 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }
.S2 { border-left: 1px solid rgba(233, 233, 233, 1); border-right: 1px solid rgba(233, 233, 233, 1); border-top: 0 none rgba(0, 0, 0, 1); border-bottom: 1px solid rgba(233, 233, 233, 1); border-radius: 0 0 4px 4px; padding: 0 45px 4px 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }
.S3 { margin: 2px 10px 9px 4px; padding: 0; line-height: 21px; min-height: 0; white-space: pre-wrap; color: rgba(0, 0, 0, 1); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left }
.S4 { margin: 10px 10px 9px 4px; padding: 0; line-height: 21px; min-height: 0; white-space: pre-wrap; color: rgba(0, 0, 0, 1); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left }
.S5 { border: 1px solid rgba(233, 233, 233, 1); border-radius: 4px; padding: 6px 45px 4px 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }
.S6 { border-left: 1px solid rgba(233, 233, 233, 1); border-right: 1px solid rgba(233, 233, 233, 1); border-top: 0 none rgba(0, 0, 0, 1); border-bottom: 1px solid rgba(233, 233, 233, 1); border-radius: 0; padding: 0 45px 4px 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }
.S7 { color: rgba(64, 64, 64, 1); padding: 10px 0 6px 17px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: hidden; line-height: 16.996px }
.S8 { border-left: 1px solid rgba(233, 233, 233, 1); border-right: 1px solid rgba(233, 233, 233, 1); border-top: 1px solid rgba(233, 233, 233, 1); border-bottom: 0 none rgba(0, 0, 0, 1); border-radius: 0; padding: 6px 45px 0 13px; line-height: 16.996px; min-height: 18px; white-space: nowrap; color: rgba(0, 0, 0, 1); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px }

Matlab画colormap的一种色彩搭配方法的更多相关文章

  1. Matlab画平滑曲线的两种方法

    自然状态下,用plot画的是折线,而不是平滑曲线. 有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值.下面是源程序,大家可以根据需要自行选择,更改拟合的参 ...

  2. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  3. matlab画图形函数 semilogx

    matlab画图形函数 semilogx loglog 主要是学习semilogx函数,其中常用的是semilogy函数,即后标为x的是在x轴取对数,为y的是y轴坐标取对数.loglog是x y轴都取 ...

  4. matlab画甘特图

    近期为发小论文一直在研究作业调度问题,好不easy把数据搞出来了,结果又被画甘特图给难住了,查了各种资料.anygantt,highchart.Jfree chart等都试了,效果都不咋好.无意中留意 ...

  5. 解说cocos2d-x几种画图方法的用法与思考

    CCRenderTexture 自己的理解 CCRenderTexture类似一张空白的“画布“,用户通过自定义笔刷(CCSprite*),在touch事件中把笔刷的移动痕迹“记录”起来,从而“画”出 ...

  6. 在VC下显示JPEG、GIF格式图像的一种简便方法

    在VC下显示JPEG.GIF格式图像的一种简便方法 一. 引言  JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛 ...

  7. MATLAB学习之内存溢出的管理方法

    今天用Matlab跑程序,由于数据量太大,又出现 Out of memory. Type HELP MEMORY for your options.的问题.看到这篇文章非常实用,转过来方便查阅~ 用 ...

  8. opencv2.4中SVD分解的几种调用方法

    原帖地址: http://blog.sina.com.cn/s/blog_6109b5d00101ag7a.html       在摄影测量和计算机视觉中,考虑最优解问题时,经常要用到SVD分解.奇异 ...

  9. matlab和c++混合编程---matlab和vs的环境配置问题及方法和步骤(转载)

    matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...

随机推荐

  1. Python中Tk模块简单窗口设计

    Python中Tk和PyQt都可以设计小程序,区别在于:Tk界面美观度相对较差,但由于是Python的内置模块,最终生成的程序大小相比于PyQt较小. import tkinter # 导入TKint ...

  2. 入坑Java的自学之路

    # 入坑Java的自学之路 ## 基础知识 - 编程语言:Java python c- 基本算法- 基本网络知识 tcp/ip http/https- 基本的设计模式 ------ ## 工具方面 - ...

  3. ssh 登录远程服务器--config配置

    一.config 配置案列 Host master HostName: 39.105.61.1 Port 22 User root IdentityFile <id_rsa> 二.配置讲解 ...

  4. P4234-最小差值生成树【LCT】

    正题 题目链接:https://www.luogu.com.cn/problem/P4234 题目大意 给出\(n\)个点\(m\)条边的一张图.求一棵生成树使得最大边权减去最小边权最小. \(1\l ...

  5. YbtOJ#482-爬上山顶【凸壳,链表】

    正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/2 题目大意 \(n\)个点,\(x\)坐标递增,第\(i\)个点向第\(j\)个点连边. 开 ...

  6. WPF进阶技巧和实战04-资源

    资源集合 每个元素都有Resources属性,该属性存储了一个资源字典集合(它是ResourceDictionary类的实例).资源集合可以包含任意类型的对象,并根据字符串编写索引. 每个元素既可以访 ...

  7. 记一次centos挂载ceph存储的坑

    起因 生产有两台服务器,准备用来跑工作流,执行的资源的是放在ceph存储集群中,第一步挂载ceph 执行命令:mount -t ceph xxx:xxx -o name=admin,secret=AQ ...

  8. Java 使用 Socket 实现客户端和服务器的信息交互

    服务器 public class Server{ private ServerSocket serverSocket; private Socket socket; private BufferedR ...

  9. Serverless 架构到底要不要服务器?

    作者 | aoho 来源 | Serverless 公众号 Serverless 是什么? Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什么. ...

  10. 鲲鹏展翅|SphereEx 获华为鲲鹏技术认证

    SphereEx Data Middleware 通过了华为鲲鹏技术认证并加入鲲鹏展翅伙伴计划,未来 SphereEx Data Middleware 产品将继续以分布式能力为基础,以数据安全.分布式 ...