watfe 发表于 2009-4-10 22:08

请大家指点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 编辑 ]

sogooda 发表于 2009-4-10 22:50

试试这个能不能满足要求。
BM=cell2mat(B);
plot(BM(:,1),BM(:,2),'r.');
axis equal


[ 本帖最后由 sogooda 于 2009-4-10 22:55 编辑 ]

watfe 发表于 2009-4-11 10:45

非常感谢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 编辑 ]

rencs1 发表于 2011-4-13 20:34

太有用了,谢谢2楼了{:{39}:}{:{39}:}
页: [1]
查看完整版本: 请大家指点cell矩阵组plot输出的其他方法