空灵学院

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 1867|回复: 0

基于Matlab的颜色数据显示解决方案

[复制链接]

1137

主题

1761

帖子

7558

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7558
发表于 2014-1-19 17:26:31 | 显示全部楼层 |阅读模式
以下内容摘自好友lyqmath新浪博客,在此借花献佛。

前言
有关颜色映射表,对自主设置图像或曲线显示效果,添加数据信息到颜色等,
有重要作用。其本质还是根据要求构造出颜色映射表,然后对应该表显示出合适的颜色。

内容
对矩阵A,
A = [2 2 0 0 0 2 2 2 2 2
2 2 2 0 0 0 2 0 0 2
0 2 2 2 2 2 2 0 0 2
2 2 2 0 2 0 2 2 2 0
0 2 2 2 0 9 0 2 2 2
0 0 0 2 0 0 2 2 2 2
0 0 5 0 2 0 0 0 2 2
0 4 0 0 2 0 2 0 2 2
0 0 3 0 2 2 2 2 2 2
1 1 0 2 2 2 2 2 2 0];

要求:将所有的0 用白色表示,所有的跨越集团(左右或上下连通),此处
为2 和9,用黑色表示,其他的用colorbar 对应的颜色。

代码
  1. % By lyqmath
  2. % DLUT School of Mathematical Sciences 2008
  3. % BLOG:[url]http://blog.sina.com.cn/lyqmath[/url]
  4. clc; clear all; close all;
  5. A = [2 2 0 0 0 2 2 2 2 2
  6.     2 2 2 0 0 0 2 0 0 2
  7.     0 2 2 2 2 2 2 0 0 2
  8.     2 2 2 0 2 0 2 2 2 0
  9.     0 2 2 2 0 9 0 2 2 2
  10.     0 0 0 2 0 0 2 2 2 2
  11.     0 0 5 0 2 0 0 0 2 2
  12.     0 4 0 0 2 0 2 0 2 2
  13.     0 0 3 0 2 2 2 2 2 2
  14.     1 1 0 2 2 2 2 2 2 0];
  15. figure;
  16. imagesc(A); % 显示矩阵A
  17. % 借助jet颜色表构造
  18. map1 = colormap('jet');
  19. A1 = unique(A(:)); ind = max(A1(:));
  20. map2 = map1(round(linspace(1, size(map1, 1), ind)), :);
  21. map2(A1(1)+1, :) = [1 1 1];
  22. map2(A1(3)+1, :) = [0 0 0];
  23. map2(A1(7)+1, :) = [0 0 0];
  24. colormap(map2);
  25. colorbar;
  26. hold on;
  27. for i = 1 : size(A, 1)
  28.     for j = 1 : size(A, 2)
  29.         % 标注
  30.         text(j, i, num2str(A(i, j)), 'color', 'r');
  31.     end
  32. end
复制代码
结果






总结
类似的,可以应用于很多相关问题中,比如使用三维曲面+颜色来表示四维数据等。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|空灵学院 ( 11033542 )

GMT+8, 2024-5-7 07:26 , Processed in 0.032392 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表