bop 发表于 2009-6-24 21:31

求助:画圆面?

已知:
两列,50行的数组,例如
x   y
0   16000
1      15000
。   。
。   。
49   15000
50      16000

想画一个圆面,其中,在直径上的数据(灰度值)按y列分布。
最后用imagesc做图

请问应该怎么画,谢谢?
clc
clear all
close all
=meshgrid(-50:49);
M=zeros(100);
M(:,:)=50000; %背景
R=(0:35) ;%直径
I=(0:1000:35000); %要填充的灰度值
N=length(R);
for i=1:4
M(sqrt(x.^2+y.^2)==R(i))=I(i);
imagesc(-50:49,-50:49,M),colormap gray;
hold on
end

如果哦我按这个运行,最后得到的不是圆面,而是点分布。
请问该如何修改,才能得到填充的圆面?例如中间灰度值为0,然后不同的直径对应不同的灰度值

[ 本帖最后由 bop 于 2009-6-25 03:17 编辑 ]

ChaChing 发表于 2009-6-24 22:37

原帖由 bop 于 2009-6-24 21:31 发表 http://www.chinavib.com/forum/images/common/back.gif
...画一个圆面,其中,在直径上的数据按y列分布...
不太清楚LZ的意思!
试试polar是否LZ要的

[ 本帖最后由 ChaChing 于 2009-6-24 22:40 编辑 ]

bop 发表于 2009-6-25 03:24

原帖由 ChaChing 于 2009-6-24 22:37 发表 http://www.chinavib.com/forum/images/common/back.gif

不太清楚LZ的意思!
试试polar是否LZ要的

polar好像不是的。

我是想用matlab,画一圆面。恩,例如,定义该圆面中心灰度值为零(黑色),然后其他地方的灰度值值随着半径的变化而变化。

请问,我该怎么修改呢?
谢谢

wwbeyondww 发表于 2009-6-26 11:45

回复 板凳 bop 的帖子

可以做,精度不高,修改代码仅供参考,如何改进解析度自己考虑
clc
clear all
close all
=meshgrid(-50:49);
M=zeros(100);
M(:,:)=50000; %背景
R=(0:35) ;%直径
I=(0:1000:35000); %要填充的灰度值
N=length(R);
for i=1:N,
M(abs(sqrt(x.^2+y.^2)-R(i))<10)=I(i);
imagesc(-50:49,-50:49,M),colormap gray;
hold on
end

ChaChing 发表于 2009-6-26 22:12

回复 楼主 bop 的帖子

使用编辑将讯息合成一帖是个好习惯!
但建议楼主以後视情况使用, 不然2F的回帖变成很唐突!

bop 发表于 2009-6-29 04:45

原帖由 ChaChing 于 2009-6-26 22:12 发表 http://www.chinavib.com/forum/images/common/back.gif
使用编辑将讯息合成一帖是个好习惯!
但建议楼主以後视情况使用, 不然2F的回帖变成很唐突!

恩,不好意思。

bop 发表于 2009-6-29 05:16

原帖由 wwbeyondww 于 2009-6-26 11:45 发表 http://www.chinavib.com/forum/images/common/back.gif
可以做,精度不高,修改代码仅供参考,如何改进解析度自己考虑
clc
clear all
close all
=meshgrid(-50:49);
M=zeros(100);
M(:,:)=50000; %背景
R=(0:35) ;%直径
I=(0:1000:35000); %要填充的灰度值 ...

谢谢。

后来我又尝试用fill,但是得到的图像上面有一个个圆环,就好象是分界线,请问这个分界线( 轮廓线?)可以去掉吗?
谢谢

clc
clear all, close all
=meshgrid(-50:49);
M=zeros(100);
R=(0:35);
I=(0:1000:35000);
N=length(R);
N=length(R);
for i=1:N,
M(abs(sqrt(x.^2+y.^2)-R(i))<10)=I(i);
imagesc(-50:49,-50:49,M),colormap gray,axis('square');
hold on
end
%using fill
figure(2)%就是下面的程序画出的圆出现分界线
for k=N:-1:1
    t=0:pi/100:2*pi;
    Cir=R(k)*exp(1i*t); %确定圆的大小
    fill(real(Cir),imag(Cir),I(k)),colormap gray,axis('square'); %填充该圆面
    hold on
end
   
谢谢

[ 本帖最后由 bop 于 2009-6-29 05:25 编辑 ]

wwbeyondww 发表于 2009-6-29 07:47

回复 7楼 bop 的帖子

fill里加参数
fill(real(Cir),imag(Cir),I(k),'edgecolor','none'),colormap gray,axis('square'); %填充该圆面

bop 发表于 2009-6-29 15:17

原帖由 wwbeyondww 于 2009-6-29 07:47 发表 http://www.chinavib.com/forum/images/common/back.gif
fill里加参数
fill(real(Cir),imag(Cir),I(k),'edgecolor','none'),colormap gray,axis('square'); %填充该圆面

好的,多谢了!:handshake
页: [1]
查看完整版本: 求助:画圆面?