matlab rgb三维直方图,MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]
MATLAB自带有绘制三维柱状图的函数bar3,有版友反映不好控制柱子的颜色,特别是bar3不能绘制渐变色的柱子,并且bar3不能根据用户指定的散点数据绘制柱状图。为此,我编写了一个函数(scatterbar),用来绘制带渐变色的三维彩色柱状图。下面给出示例。
【例】根据散点数据绘制三维彩色柱状图
代码1:
[x,y] = meshgrid(-6:6,-3:0.5:3);
z = mvnpdf([x(:),y(:)],[0,0],[4,0;0,1]);
scatterbar(x,y,z)
效果图1:
代码2:
x = 0:0.1:2*pi;
y = sin(x);
scatterbar(x,y,y,100);
效果图2:
代码3:
t = 0:0.1:2*pi;
x = cos(t);
y = sin(t);
z = abs(y);
scatterbar(x,y,z,100);
效果图3:
scatterbar函数源代码:
function scatterbar(x,y,z,scale)
% 根据散点数据绘制3维彩色柱状图
% scatterbar(x,y,z,scale)
x,y,z是实值数组,用来指定柱子顶面中心点三维坐标。
% scale是大于0的标量,用来指定柱子的粗细,scale越大,柱子越细,默
% 认情况下根据坐标点自动计算柱子的粗细。
%
% CopyRight:xiezhh(谢中华)
% 2011.10.31
% Example:
% [x,y] =
meshgrid(-6:6,-3:0.5:3);
% z =
mvnpdf([x(:),y(:)],[0,0],[4,0;0,1]);
% scatterbar(x,y,z)
% scatterbar(x,y,z,50);
% 输入参数类型判断
if nargin < 3
error('至少需要三个输入参数');
end
if ~isreal(x) || ~isreal(y) || ~isreal(z)
error('前三个输入应为实值数组');
end
% 提取x,y,z等长部分的元素
x = x(:);
y = y(:);
z = z(:);
n = min([numel(x) numel(y) numel(z)]);
x = x(1:n);
y = y(1:n);
z = z(1:n);
% 计算极差和差分值
rx = range(x);
ry = range(y);
dx = abs(diff(x));
dx = min(dx(dx>0));
dy = abs(diff(y));
dy = min(dy(dy>0));
% 自动计算柱子的粗细
if nargin == 3
if ~isempty(dx)
hx = dx/2;
else
hx = 0.5;
end
if ~isempty(dy)
hy = dy/2;
else
hy = 0.5;
end
end
% 根据用户输入参数scale计算柱子的粗细
if nargin == 4
if ~isreal(scale) || scale
< 0
error('第四个输入应为正的标量');
end
if rx == 0 && ry ==
0
rx = 0.5*scale;
ry = rx;
elseif rx == 0 || ry == 0
rx = max(rx,ry);
ry = rx;
end
hx = rx/scale;
hy = ry/scale;
end
% 通过循环绘制三维彩色柱状图
figure
hold on
Xp = [];
Yp = [];
Zp = [];
for i = 1:n
[xp,yp,zp] =
Vertices(x(i),y(i),z(i));
Xp = [Xp;xp];
Yp = [Yp;yp];
Zp = [Zp;zp];
end
%通过surf函数生成彩色的立方体盒子
h = surf(Xp,Yp,Zp,Zp,'FaceColor','interp');
%set(h,'FaceAlpha',0.25); %设置立方体盒子透明度
grid on
view(3)
hold off
%--------------------------------------------------
% 求柱子顶点的子函数
%--------------------------------------------------
function [xp,yp,zp] = Vertices(x,y,z)
% 由长方体底面中心坐标求顶点坐标
xp = [x-hx x-hx x+hx x+hx
x-hx
x-hx x-hx x+hx x+hx x-hx
x-hx x-hx x+hx x+hx x-hx
x-hx x-hx x+hx x+hx x-hx
x x x
x x
NaN NaN
NaN NaN
NaN];
yp = [y-hy y+hy y+hy y-hy
y-hy
y-hy y+hy y+hy y-hy y-hy
y-hy y+hy y+hy y-hy y-hy
y-hy y+hy y+hy y-hy y-hy
y y y
y y
NaN NaN
NaN NaN
NaN];
zp =
[repmat(linspace(0,z,4)',[1,5]);z z z z z;NaN NaN NaN NaN NaN];
end
end
matlab rgb三维直方图,MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]相关推荐
- matlab矩阵画柱状三维,[原创]利用MATLAB绘制三维彩色柱状图
function scatterbar(x,y,z,scale) % 根据散点数据绘制3维彩色柱状图 % scatterbar(x,y,z,scale) x,y,z是实值数组,用来指定柱子顶 ...
- 什么是拖延症 ----- 时间管理:终结拖延症小技巧之高效利用时间
转载 http://blog.sina.com.cn/s/blog_4c34ea7b0101ebdj.html?tj=1 http://blog.sina.com.cn/s/blog_4c34ea7b ...
- MATLAB中的一些小技巧 - [MATLAB]
http://liuxqsmile.blogbus.com/logs/17451138.html MATLAB中的一些小技巧 1. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算 ...
- 【Matlab编程实现常见小问题之二】Matlab如何实现QR二维码的生成与识别
本篇文章中,旨在解决如何用Matlab编程实现QR二维码的生成与识别.编程环境是Matlab2012a,所用的开源库是ZXing,ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目 ...
- VB.net小技巧——VB中利用TreeView控件和Box控件做知识备忘
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧--VB中利用TreeView控件和Box控件做知识备忘 这里不涉及代码的展示,主要是为了阐述一种做笔记的思想. 为 ...
- Matlab中的一些小技巧
转自:http://blog.chinaunix.net/uid-20551209-id-3202608.html 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长 ...
- 【小技巧】Linux安装matlab教程
## 下载 1. 下载MATLAB R20XXa for Linux full crack文件 ## 安装 2. 进入下载后的文件夹(假如下载后的文件放在了/home/deeppf中,其中deeppf ...
- matlab求解参数线性规划问题,实验三十用MATLAB求解线性规划问题
<实验三十用MATLAB求解线性规划问题>由会员分享,可在线阅读,更多相关<实验三十用MATLAB求解线性规划问题(27页珍藏版)>请在人人文库网上搜索. 1.实验三十 用MA ...
- Linux之头文件引用小技巧(二十九)
Linux之头文件引用小技巧 0.需求: 将本地头文件引用,#include "test.h"更换为#include <test.h>系统引用方式.1.目录结构如下├─ ...
最新文章
- 干货合集 | 带你深入浅出理解深度学习(附资源打包下载)
- python内置函数(2)-递归与迭代
- LeetCode Valid Number(判断字符串是否是合法的数字表示 )
- 学python需要记笔记吗_自学python需要做什么笔记
- 12、OpenCV Python 图像梯度
- FreeBSD 10 将使用 Clang 编译器替换 GCC
- mysql悲观锁关键字_MySQL悲观锁 select for update实现秒杀案例(jfinal框架)
- 新年快乐!我爱计算机视觉干货集锦与新年展望
- Android sdk 搭建
- 软件测试简历常见问题
- 视频通信系统的关键技术与挑战
- 计算机专业我的生涯规划档案,大学生学业生涯规划登记表11.doc
- 数据的更新(update的用法)笔记
- DevExpress的双击获取单元格数据
- RT-Thread Studio 使用笔记(六)| 获取光传感器数据(I2C设备驱动+BH1750手写驱动代码分享)
- java 8 joda time,Joda Time 使用
- Scratch模拟题(二级)_1
- 前端工程化——脚手架及自动化构建
- 远程工具之一---rsync用法介绍
- 桌面壁纸被计算机管理员禁用,电脑壁纸被管理员设置禁用了,怎么处理啊?
热门文章
- 数独问题每行每列每3X3
- python怎么启动mne_mne-python 安装大法
- 图像处理:图像清晰度评价
- c语言位运算负数的实例_负数位运算的右移操作-C语言基础
- Hides for Mac v5.6一键隐藏所有应用 支持 M1
- SAP BAPI BAPI_GOODSMVT_CREATE Goods movement
- dva 配置antd
- 《设计模式》之策略模式
- 处理txt文件下载下来以后,排版格式不对的问题
- 《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》论文笔记