请大家指点cell矩阵组plot输出的其他方法
我基本没学过matlab,cell函数完全不懂今天毕设设计圆轮廓点输出的时候,只能用笨方法分别读取cell中每一个矩阵,然后再分别设x,y。plot输出。
我想问的是cell有没有直接能输出plot图像的函数?
% BY watfe, 读取图像,识别圆轮廓
clc; clear;
I=imread('circle.bmp'); I0=im2bw(I,graythresh(I));
figure;imshow(I0,[]);
=bwboundaries(I0); =size(L)
% 输出cell(B)中的所有轮廓点
figure;
for c=1:length(B)
a=B{c}; length(a);
for p=1:10:length(a)
x=a(p,1); y=a(p,2);
plot(y,v-x,'r:.'); hold on; axis square
end
end
[ 本帖最后由 ChaChing 于 2009-4-11 20:20 编辑 ] 试试这个能不能满足要求。
BM=cell2mat(B);
plot(BM(:,1),BM(:,2),'r.');
axis equal
[ 本帖最后由 sogooda 于 2009-4-10 22:55 编辑 ] 非常感谢sogooda教研主任!
原来有cell2mat函数可以将所有点输出成一个矩阵啊,长知识了,手头工具书不全。要自己查真的可能好久。
程序很完美,能满足要求。
因为后面还有圆拟合的程序,所以我改动了一点点,和主楼那个程序一样间隔取点。(不好意思,我在主楼的注释当时写错了,不是所有轮廓点,而是每十个输出一个)
BM=cell2mat(B)
plot(BM(1:10:length(BM),1),BM(1:10:length(BM),2),'r.');
axis equal
总之非常感谢啦~呵呵,解决了很大一个问题。
扩展查了一下,原来cell2mat(B(1)),cell2mat(B(2))……
可以用来分别输出每一组数。呵呵,这样就更方便后面的拟合运算了。
谢谢教研室的sogooda大大~
[ 本帖最后由 watfe 于 2009-4-11 10:50 编辑 ] 太有用了,谢谢2楼了{:{39}:}{:{39}:}
页:
[1]