matlab画三原色品图,怎么为色品图填充颜色,Error using == TriScatteredInterp
本帖最后由 2040849623 于 2014-5-14 10:52 编辑
下面是我的程序,data数据过多,我只取了一部分,运行的结果只有色品图的轮廓线,颜色填充不上去
程序提示错误为
??? Error using ==> TriScatteredInterp
The number of data point locations should equal the number of data point values.
Error in ==> zuhe at 504
FR=TriScatteredInterp(x,y,R,'natural');
论坛内的高手能帮忙看一下吗?不胜感激!我的代码:
data=[360 0.0001299 3.92E-06 0.0006061
361 0.0001458 4.39E-06 0.0006809
362 0.0001638 4.93E-06 0.0007651
363 0.000184 5.53E-06 0.00086
364 0.0002067 6.21E-06 0.0009666
365 0.0002321 6.97E-06 0.001086
366 0.0002607 7.81E-06 0.0012206
367 0.0002931 8.77E-06 0.0013727
368 0.0003294 9.84E-06 0.0015436
369 0.0003699 1.10E-05 0.0017343
370 0.0004149 1.24E-05 0.001946
371 0.0004642 1.39E-05 0.0021778
372 0.000519 1.56E-05 0.0024358
373 0.0005819 1.74E-05 0.002732
374 0.0006552 1.96E-05 0.0030781
375 0.0007416 2.20E-05 0.003486
376 0.000845 2.48E-05 0.0039752
377 0.0009645 2.80E-05 0.0045409
378 0.0010949 3.15E-05 0.0051583
379 0.0012312 3.52E-05 0.0058029
380 0.001368 0.000039 0.00645
381 0.0015021 4.28E-05 0.0070832
382 0.0016423 4.69E-05 0.0077455
383 0.0018024 5.16E-05 0.0085012
384 0.0019958 5.72E-05 0.0094145
385 0.002236 0.000064 0.01055
386 0.0025354 7.23E-05 0.0119658
387 0.0028926 8.22E-05 0.0136559
388 0.0033008 9.35E-05 0.0155881
389 0.0037532 0.0001061 0.0177302
390 0.004243 0.00012 0.02005
391 0.0047624 0.000135 0.0225114
392 0.00533 0.0001515 0.0252029
393 0.0059787 0.0001702 0.0282797
394 0.0067411 0.0001918 0.031897
395 0.00765 0.000217 0.03621】
sumD=data(:,2)+data(:,3)+data(:,4);
x=data(:,2)./sumD;
y=data(:,3)./sumD;
X=data(:,2);%X刺激值
Y=data(:,3);%Y刺激值
Z=data(:,4);%Z刺激值
N=[X,Y,Z];
M=[0.49,0.31,0.2;
0.17697,0.81240,0.01063;
0.00,0.01,0.99];
RGB=0.17697*M^-1*N';
R=RGB(:,1);
G=RGB(:,2);
B=RGB(:,3);
hold on;
grid
plot(x,y);
%获取数组长度
[len,a]=size(x);
%把图形封闭起来
plot([x(1),x(len)],[y(1),y(len)]);
x1=[x;x(1)];
y1=[y;y(1)];
tic
[XX,YY]=meshgrid(0:.01:1,0:.01:1);
in=inpolygon(XX,YY,x1,y1);
index=find(in==1);
FR=TriScatteredInterp(x,y,R,'natural');
FG=TriScatteredInterp(x,y,G,'natural');
FB=TriScatteredInterp(x,y,B,'natural');
for i =1:length(index)
r=FR(XX(index(i)),YY(index(i)));
g=FG(XX(index(i)),YY(index(i)));
b=FB(XX(index(i)),YY(index(i)));
if(r>0.95&&g>0.95&&b>0.95) %白化处理,防止因插值带来的误差
r=1;g=1;b=1;
end
if(r>1)
r=1;
elseif(r<0)
r=0;
end
if(g>1)
g=1;
elseif(g<0)
g=0;
end
if(b>1)
b=1;
elseif(b<0)
b=0;
end %防止rgb的溢出,正确的做法
%M=mapminmax([r g b],0,1); %归一化处理这样的归一化处理会损失掉rgb颜色的比例
%这就是为什么没有出现白点的原因,还有一个就是插值求得的rgb有的为负
%但是插值求得的值很多接近于0,必须对其进行归一化处理,否则,整体就变成了黑色
%fill(XX(index(i)),YY(index(i)),M); %给一个小的区域填充,会比一个一个地描绘点更快
plot(XX(index(i)),YY(index(i)), 'MarkerSize',10,'Color',[r,g,b]);
end
toc
select=1; %控制标记
xre=0.333;yre=0.333; %参考白点xy坐标
plot(xre,yre,'ko');
while(select==1)
zoom on
[x0,y0]=ginput(1);
zoom off
if(inpolygon(x0,y0,x1,y1))
if(xre==x0)
x3=xre;
y3=max(y)+0.1;
elseif(yre==y0)
x3=max(x)+0.1;y3=yre;
else
k=(yre-y0)/(xre-x0);%计算参考点和选取点的斜率
end
if(x0>xre)
x3=max(x)+0.1;
y3=yre-k*(xre-x3);
if(x0
x3=-0.1;
y3=yre-k*(xre-x3);
end
end
select=0;
else
errordlg('拾取点在色品图外部,无法计算色度和饱和度.请重新选取','Waring!','on');
pause(1)
end
end
xline=[xre x0 x3];
yline=[yre y0 y3];
[xcross,ycross]=polyxpoly(xline,yline,x1,y1,'unique');
xxline=[xre x0 xcross];
yyline=[yre y0 ycross];
plot(xxline,yyline,'r');
plot(x0,y0,'ko');
plot(xcross,ycross,'ko');
xlabel('x')
ylabel('y')
title('CIE-xyz')
text(xre,yre,' referene point')
text(x0,y0,' input point')
text(xcross,ycross,' cross point')
%色调H,饱和度S的计算
if( (ycross-y(1))*(x(end)-xcross) == (y(end)-ycross)*(xcross-x(1)) )%交点在纯紫线上
H=780;
else
wavelength=data(:,1);
H=griddata(x,y,wavelength,xcross,ycross,'v4');
end
D=sqrt((xre-xcross)^2+(yre-ycross)^2);%参考白点到交点的距离
d=sqrt((xre-x0)^2+(yre-y0)^2); %参考白点到拾取点的距离
S=d/D;
2014-5-14 10:46 上传
我的结果
2014-5-14 10:49 上传
matlab画三原色品图,怎么为色品图填充颜色,Error using == TriScatteredInterp相关推荐
- android 画 月牙曲线,几何画板如何给月牙图形填充颜色
在几何画板中,给组合图形内部设置阴影.填充颜色通常用轨迹法和图形内部填充色后叠放层序的常规办法解决的,但给曲线一类的组合图填充颜色用前面两种方法,要么效果不理想,要么很费力.在制图过程的操作中,还有一 ...
- matlab画一个三维图形投影的函数的图
在 MATLAB 中,可以使用 surf 函数画出三维图形的投影图.首先,需要确定图形的 X.Y 和 Z 坐标数据.然后,可以在命令窗口中输入 surf(X,Y,Z) 来绘制图形. 例如: [X,Y] ...
- 一分钟教你迅捷CAD看图怎么切换显示模式以及图案填充颜色?
随着现在CAD相关的辅助软件应用的不断增多,我们也越来越依赖与CAD辅助设计软件,因为它的功能很多,操作起来也很方便,在使用迅捷CAD画图制图的时候,又该怎么切换显示模式与填充颜色?要是在绘图操作中需 ...
- 数学建模中如何用 matlab画漂亮的图(一)
数学建模中如何用 matlab画漂亮的图(二维图形) 1 plot绘图命令*** 1.1 plot(x) 当x为实向量时,plot(x)绘制出的曲线,横坐标为该向量的下表,纵坐标为每一个下表位置所对应 ...
- matlab画线不同颜色_怎样画线框图才有意义?
本文由 Jonathan 译自 https://medium.muz.li/how-to-succeed-in-wireframe-design-2ab3cd5c4bc9 我们常轻忽身边习以为常的事物 ...
- matlab画线不同颜色_怎样画线框图才有意义
我们常轻忽身边习以为常的事物,觉得没有必要为一些看似简单又可有可无的东西浪费时间--例如线框图.虽然没必要凡事都寻根问底,但当面对复杂问题时,脚踏实地回归基本面也许才是根本解法. 本文章深入介绍程序开 ...
- matlab三维实心图,matlab画实心散点图
MATLAB 图形绘制蔺勇智制作 2008.4.9 2019/2/14 哈尔滨理工大学机械动力工程...特殊图形绘制面域图.直方图.饼图.等高线.相量图.散点图 等均属于特殊图形...... 381. ...
- 【沧海拾昧】用MATLAB画一张简单的图
#C0401 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...
- matlab泰勒图,matlab画泰勒图
急 在matlab中写个用泰勒级数计算arctan(x)的方程 clear;clc;x=1;s=0;y=atan(x);fori=1:1e6n=2*i-1;s=s+(-(-1)^i)*(x^n)/n; ...
- matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
matlab画三维图 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图.闲话不多说,直接进入正题.首先介绍几个函数: 1.plot3(x,y,z,-) 其中,x,y,z为维数相同的 ...
最新文章
- java相关网络协议无响应_java网络协议有哪些
- javascript调用父窗口(父页面)的方法
- 白话算法(6) 散列表(Hash Table)从理论到实用(中)
- CSS3-多列布局-伸缩盒布局-伸缩项目
- 转载JMF多媒体doc教程
- LotusScript (转)
- UNP Chapter 19 - 多播
- Hello World程序的起源与历史
- python无法调用安装的包_无法在Windows 10上使用python2.7/MINGW安装pyslalib软件包
- 让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
- PCI-E接口的学习
- 云边协同的智能制造系统
- 如何保存卡住的wps_我告诉你wps卡住了怎么办
- 如何在CAD中快速定位坐标?
- 最酷网学习,如何做一个轮播
- macOS Monterey 12.5 (21G72) 正式版 ISO、IPSW、PKG 下载
- 2016年linux认证考试,2016年Linux认证考试复习要点辅导
- imx6ull:uboot的make xxx_defconfig 过程分析
- linux 查看.img文件,linux img文件 分区挂载
- 虚心接受别人善意的批评
热门文章
- 软件录制电脑扬声器音频的原理
- 基于RFID定位技术的智能仓储管理系统--RFID智能仓储--新导智能
- 数据库课程设计——某商店进销存管理系统(附Java源码与课程设计报告)
- 【​观察】玩客币更名“链克”背后 迅雷的区块链探索之路
- 欧路词典如何导入html,[转载]如何用欧路词典背单词?
- Envi监督分类,主要是随机森林分类
- 利用简单电阻分压原理自动测量电阻
- 机器视觉在智能制造中的应用
- [数据通信]DHCP报文详解
- Java使用POI实现多个excel合并成一个excel