声学与振动数据分析经常需要画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. 织梦Call to a member function GetInnerText() on string

    "include"-"customfields.func.php"文件,在第539行中把以下代码: $fvalue = trim($ntag->GetIn ...

  2. Linux系列(35) - 光盘yum源搭建(2)

    光盘搭建yum源 背景 当前Linux服务器没有网络,yum源下载好了,在光盘中 step-01 挂载光盘 mkdir /mnt/cdrom #建立挂载点 mount /dev/cdrom /mnt/ ...

  3. Shell系列(36)- for循环语法二简介及批量添加删除用户

    for循环语法二 for ((初始值;循环控制条件;变量变化)) do 程序 done 例子 例子-1 求和工具 需求:根据用户输入的数字,求1~输入所有数字的和 脚本: #!/bin/bash re ...

  4. 《Android自动化环境搭建》

    一.安装JDK并配置环境变量 1:在Java官网上下载本机系统相对应的jdk文件安装,直接下一步一步到位 2:配置JAVA_HOME 新建 JAVA_HOME 环境变量,变量值是所安装JDK 的路径, ...

  5. fliebeat配置手册

    1.  关于Filebeat 当你要面对成百上千.甚至成千上万的服务器.虚拟机和容器生成的日志时,请告别 SSH 吧!Filebeat 将为你提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情 ...

  6. 小白学习Python英语基础差怎么办,都帮你想好拉!看这里

    运算符与随机数 1.module:模块 2.sys(system):系统 3.path:路径 4.import:导入 5.from:从- 定义函数与设定参数 1.birthday:出生日期 2.yea ...

  7. SQL Server 命令备忘录(持续更新...)

    1.删除表内容并重置ID truncate table 表名 2.开启SqlDependency监控数据库 在数据中执行以下查询: SELECT is_broker_enabled FROM sys. ...

  8. 演员 Or 开发者的自我修养

    演员 Or 开发者的自我修养 时至今日,我都还是很怀念小时候与一群玩伴编写剧本.拍摄,那时候的我还有一个远大的"白日梦"--成为一名导演.很可惜,终究是"白日梦" ...

  9. windows中抓包命令,以及保存为多个文件的方法

    本文主要介绍windows中抓包命令,以及保存为多个文件的方法 说一说保存为多个文件存储数据包这个问题的由来,一般如果长时间抓包,有可能需要等上几个小时,因为这个时候抓包的内容都是存放在内存中的,几个 ...

  10. WSL (Windows Subsystem for Linux)

    WSL (Windows Subsystem for Linux) :适用于 Linux 的 Windows 子系统. References Install WSL with a single com ...