圆周方向插值求指导
我想在圆周方向,从圆心到外颜色均匀的分布,而不是像下面程序中那样,在四个方向(0,90,180,270)上有个“尖”,而且颜色变化也不均匀。不知道愿不愿意指导一下。
X=;
t=;
x=; %分布在四个方向上
y=;
t=;
pp1=-8:0.05:8;
pp2=-8:0.05:8;
=meshgrid(pp1,pp2);
T=griddata(x,y,t,X,Y,'v4');
T((T>1600))=NaN;
T((T<0))=NaN;
=contourf(X,Y,T,8);set(h,'Color','None');colorbar 其实这个可能主要和这句话“T=griddata(x,y,t,X,Y,'v4');”有关系,但是又不知道该怎么来做,cubic,nearest这些也都试了,效果还不如v4,v4至少还是圆型的。
不知道高手们有什么建议啊? 我不太明白你的意思,我觉得尖的来自于四个拼接处的不连续性
我写了几行代码,估计不是你的意思,但是希望对你有帮助clear;clc;close all
% X=;
% t=;
% x=; %分布在四个方向上
% y=;
% t=;
t0=linspace(0,2*pi);
x=cos(t0);
y=sin(t0);
t=10+zeros(length(t0),1);
pp1=-8:0.05:8;
pp2=-8:0.05:8;
=meshgrid(pp1,pp2);
T=griddata(x,y,t,X,Y,'v4');
T((T>1600))=NaN;
T((T<0))=NaN;
=contourf(X,Y,T,8);set(h,'Color','None');colorbar
axis equal 1.莫指名 2.点数过少不利插分 3.卡氏座标并非适当网格
4.可以的话再清楚描述下问题X=;
t=;
= meshgrid((0:90:360)*pi/180,X); t=;
=meshgrid((0:5:360)*pi/180,min(X):0.05:max(X)); t2=griddata(th,r,t,th2,r2);
= pol2cart(th2,r2); =contourf(X,Y,t2,8);set(h,'Color','None');colorbar 先谢谢二位的回复。
可能本人不太善于表达,我再陈述一下我的问题:
已有数据:在圆周上几个方向的坐标数据,各个角度的坐标互相不一样,这些在上面我是举例各个角度为(0,90,180,270),存在相同的数据X。
目的:想利用这几个方向上的数据,拟合一个颜色渐变的图。效果就是ChaChing画出来的那种。
To qibbxxt :您说的“四个拼接处的不连续性”是不是我的角度方向太少了?
To ChaChing :
您画出来的效果和我的需求一样。就是有个问题,因为我上面是举例,但是实际情况下,我各个角度的坐标“X”可能不一样,会存在0°方向为X1,90°方向为X2,X1 != X2,按您这种做法的画,我怎么把各个角度的数据添加进去呢? 我这个图基本上也算个同心圆。
外面的这个圆半径是一定的
里面的半径各个角度方向上不太一样,但也相差不大,比如0°方向上是4.8443 ,90°方向上可能是 4.5,大概就是这样。 本帖最后由 valiant 于 2010-9-15 17:15 编辑
想到个放入坐标数据的笨办法: r(:,1)=X1;
r(:,2)=X2;
...........
这样可以把每个方向的坐标数据输进去。
但是用下面方法试验不同的坐标数据时: r(:,3)=r(:,3)+1;在同心圆的内部,代表最大值的“红色”区域比较大。
如果用 t2((t2>1500))=NaN;削减红色区域的话,没问题。
但是因为我的最大值是1600,理论上应该用1600才对,如果用 t2((t2>1600))=NaN;削减红色区域的话,该区域就呈现出一丝一丝的,好像被分割过了似的。
问题:我应该取多大的值来削减红色区域? 有没有一个计算理论?或者有没有别的方法来去掉插值多出来的那块黑红黑红的区域呢? 没想到好法, 好像只得如LZ所说塞对座标!
基本上, 若没有边界的函数, 要做适当的转换可能不易 还是要感谢你,至少我可以画圆了。呵呵。
页:
[1]