声学与振动数据分析经常需要画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. Groovy系列(4)- Groovy集合操作

    Groovy集合操作 Lists List 字面值 您可以按如下所示创建列表. 请注意,[]是空列表表达式 def list = [5, 6, 7, 8] assert list.get(2) == ...

  2. Centos7创建swap分区

    创建4g swap分区 dd if=/dev/zero of=/var/swap bs=1024 count=4194304 mkswap /var/swap 激活swap分区 swapon /var ...

  3. DeDeCMS v5.7 漏洞复现

    DedeCMS V5.7 漏洞复现 XSS漏洞 首先我们在首页要进行用户的注册以及登录 这里我们已经提前注册过了,登录即可 普通用户账号密码:root/passwd 管理员账号密码:admin/pik ...

  4. 基于AM335X,如何搭建优良的Linux开发环境(下)

    接着上一篇文章的Linux开发环境搭建,文章中详细讲解了 VMware14.1.1虚拟机安装.基于虚拟机安装Ubuntu14.04.3操作系统.安装Ubuntu14.04.3操作系统.安装虚拟机工具. ...

  5. bzoj3729-Gty的游戏【Splay,博弈论】

    正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出\(n\)个点的一棵树,第\(i\)个节点上有\(a_i\)个石子,然后每次可以选择不超过\(L\)个石 ...

  6. 使用VUE+原生PHP完成搜索后分页的效果

    html代码: <!doctype html> <html lang="en"> <head> <meta charset="U ...

  7. 神器----IntelliJ IDEA基本配置

    介绍 首先是百度百科对于 IDEA 的介绍 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手.代码 ...

  8. 踩坑系列《十一》完美解决阿里云vod视频点播无法播放音频和视频点播控制台里的媒资库里面的视频无法播放

    刚开始项目部署的时候,音频还是正常播放,后面直接报了 获取m3u8文件失败(manifestLoadError) 的错误,原因是 我的域名 xxx.com 这个域名没有解析到点播提供的CNAME上,所 ...

  9. 牛逼的磁盘检查工具duf

    1.部署 wget https://github.com/muesli/duf/releases/download/v0.5.0/checksums.txt wget https://github.c ...

  10. java笔记(一直更新)

    .equals()调用时,最好把equals前面放常量或者是确定有的,如果是前面是null,则会报空指针错误 也可以在调用前判断是否为null