声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1212|回复: 5

[综合讨论] 请问用什么函数能找出矩阵数据的边界?

[复制链接]
发表于 2007-10-27 21:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
大家好,我现在从文本中读出一个数据矩阵,无效数据设定为NaN,其他为有效数据。请问用什么函数可以找出此数据矩阵的边界,并将这些边界点X,Y坐标分别对应存放在两个向量里?
回复
分享到:

使用道具 举报

发表于 2007-10-27 21:33 | 显示全部楼层
何谓边界点,是NAN,还是非NAN
发表于 2007-10-27 22:02 | 显示全部楼层

回复 #1 fsnow 的帖子

help find
 楼主| 发表于 2007-10-28 00:12 | 显示全部楼层

回复 #2 donkeyxu 的帖子

边界是NaN与数据之间的边界,数据只有矩阵中间一块,但大小不确定,有效数据外围为NaN。
用edge找边界不太完整,而且中间的少数NaN点也会被看成是边界。
我想找出最外面的边界点坐标,再进行圆拟合

下图是读出后,用pcolor显示的图形

[ 本帖最后由 fsnow 于 2007-10-28 00:17 编辑 ]

读出数据

读出数据
发表于 2007-10-28 07:51 | 显示全部楼层
% M为二维数组
% BoundIdx % 边界
for k1=1:size(M,1)
          NaNIdx=find(isnan(M(k1,:)))
          JumpSize=diff(NaNIdx);
          BI=find(JumpSize>=2);
          if(isempty(BI)) %全部为NaN
                     BoundIdx(k1,1)= NaN;  %左边界
                     BoundIdx(k1,2)=NaN;   %右边界
         else
                     BoundIdx(k1,1)= NaNIdx(BI(1));  %左边界
                     BoundIdx(k1,2)=NaNIdx(BI(1)+1);   %右边界
        end
end

评分

1

查看全部评分

 楼主| 发表于 2007-10-28 10:49 | 显示全部楼层

回复 #5 VibrationMaster 的帖子

非常感谢,将你的找边界代码稍作修改。
终于实现了读数据,找边界并进行圆拟合的功能

% Fit a circle from a text data
%
[filename, pathname] = uigetfile('*.txt','Open Data');
filepath = strcat(pathname,filename);
if length(filepath) == 0
    return;
end
Data = textread(filepath,'','delimiter',';','emptyvalue',NaN);  %需根据具体情况修改
pcolor(Data), axis equal,axis tight, shading interp;
colorbar; hold on;

% find the boundary and fit to a  circle
BoundIdx = []; BoundIdy = [];
for k1=1:size(Data,1)
    NaNIdx=find(isnan(Data(k1,:)));
    JumpSize=diff(NaNIdx);
    BI=find(JumpSize>=2);
    BINum = length(BI);
    if ~(isempty(BI))
         BoundIdx = [BoundIdx NaNIdx(BI(1)) NaNIdx(BI(BINum)+1)];  
         BoundIdy = [BoundIdy k1 k1];
    end
end
[xc,yc,R,a] = circfit(BoundIdx,BoundIdy);
t = linspace(0,pi*2,100);
z = xc+yc*i+R*exp(i*t);
plot(BoundIdx,BoundIdy,'kx');
plot(z); hold off;
untitled.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 21:30 , Processed in 0.071010 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表