声学与振动数据分析经常需要画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. 微信公众号jssdk分享接口onMenuShareAppMessage自定义的参数无效,微信分享失败原因

    使用jssdk为jweixin-1.4.0.js updateTimelineShareData,安全域名接口也设置正确,可就是分享,转发朋友圈不成功. 解决方案:采用<script src=& ...

  2. ecshop transport.js IE报错(608行),对象不支持此属性或方法 的解决办法

    解决办法: 将if (this.hasOwnProperty(k)) { 改为: if (this.hasOwnProperty && this.hasOwnProperty(k)) ...

  3. 『Python』matplotlib实现动画效果

    一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...

  4. Loj#6053-简单的函数【Min25筛】

    正题 题目链接:https://loj.ac/p/6053 题目大意 定义一个积性函数\(f(p^c)=p\ xor\ c\),求\(\sum_{i=1}^nf(i)\) 解题思路 异或这个东西不太好 ...

  5. YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/3 题目大意 两个长度为\(n+1\)的序列\(a,b\) \(a_i\)表示涂了\(i\)个 ...

  6. Ubuntu系统的开机全流程介绍及grub美化

    目录 前言 Ubuntu开机经历的步骤 BIOS Boot Loader Kernel 配置 Grub 的个性化主题 /usr/share/grub/default/grub /etc/default ...

  7. docker efk(filebeat+logstash+es+kibana)

    ​ 1.系统架构 ​ 通常我们说的elastic stack,也就是elk,通过es 收集日志数据,存到elasticsearch,最后通过kibana进行统计分析,但是elastic公司后续又推出了 ...

  8. C#开发BIMFACE系列40 服务端API之模型集成

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...

  9. ShardingSphere 知识库更新 | 官方样例集助你快速上手

    Apache ShardingSphere 作为 Apache 顶级项目,是数据库领域最受欢迎的开源项目之一.经过 5 年多的发展,ShardingSphere 已获得超 14K Stars 的关注, ...

  10. bzoj2064分裂(dp)

    题目大意: 给定一个初始集合和目标集合,有两种操作:1.合并集合中的两个元素,新元素为两个元素之和 2.分裂集合中的一个元素,得到的两个新元素之和等于原先的元素.要求用最小步数使初始集合变为目标集合, ...