声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1158|回复: 3

[编程技巧] 如何去掉这个矩阵中一些无用的点呀

[复制链接]
发表于 2009-4-29 16:43 | 显示全部楼层 |阅读模式

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

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

x
我有一个矩阵N行三列(是提取的曲面的坐标),每行对应一个点的X,Y,Z坐标,现在我把这些数据按Y从大到排列后,发现对对同一个Y,同一个X,有时候有三个不同的Z值,相当于有两个点是不必要的,我想编一个删除命令,就是在Y由大到小变化中,对于同一个Y值,当X取一个值时,如果发现X取值重复,我这里有的是X多重复了两次,有的没有,需要把重复的两个X所在行删除,只保留第一个Y和第一个X所在的行,后面重复的两行删除!红色的就是需要去掉的行!不知道如果编这个程序呀,谢谢!数据如下:
X20.585Y10.710Z1.004
X20.285Y10.710Z0.968
X19.985Y10.710Z0.933
X19.685Y10.710Z0.899
X19.385Y10.710Z0.865
X19.085Y10.710Z0.831
X18.785Y10.710Z0.798
X18.485Y10.710Z0.765
X18.185Y10.710Z0.733
X17.885Y10.710Z0.702
X2.236Y10.710Z-0.193
X2.236Y10.710Z-0.199
X2.236Y10.710Z-0.205

X2.136Y10.710Z-0.195
X2.136Y10.710Z-0.201
X2.136Y10.710Z-0.207

X2.036Y10.710Z-0.196
X2.036Y10.710Z-0.202
X2.036Y10.710Z-0.209
X1.936Y10.710Z-0.198
X1.936Y10.710Z-0.204
X1.936Y10.710Z-0.210
X1.836Y10.710Z-0.199
X1.836Y10.710Z-0.205
X1.836Y10.710Z-0.211

X1.736Y10.710Z-0.201
X1.736Y10.710Z-0.207
X1.736Y10.710Z-0.213

X1.636Y10.710Z-0.202
X1.636Y10.710Z-0.208
X1.636Y10.710Z-0.214
X0.036Y8.610Z-0.333
X0.036Y8.610Z-0.293
X0.036Y8.610Z-0.349
X0.136Y8.610Z-0.332
X0.136Y8.610Z-0.155
X0.136Y8.610Z-0.348

X0.236Y8.610Z-0.332
X0.236Y8.610Z0.121
X0.236Y8.610Z-0.348
X0.336Y8.610Z-0.331
X0.336Y8.610Z0.580
X0.336Y8.610Z-0.347
X0.436Y8.610Z-0.331
X0.436Y8.610Z1.269
X0.436Y8.610Z-0.346
X0.536Y8.610Z-0.330
X0.536Y8.610Z2.095
X0.536Y8.610Z-0.345
X0.636Y8.610Z-0.329
X0.636Y8.610Z2.966
X0.636Y8.610Z-0.344
X0.736Y8.610Z-0.329
X0.736Y8.610Z3.791
X0.736Y8.610Z-0.343
X0.836Y8.610Z-0.328
X0.836Y8.610Z4.478
X0.836Y8.610Z-0.342
X0.936Y8.610Z-0.327
X0.936Y8.610Z4.936
X0.936Y8.610Z-0.341
X1.036Y8.610Z-0.326
X1.036Y8.610Z5.210
X1.036Y8.610Z-0.340
X1.136Y8.610Z-0.325
X1.136Y8.610Z5.347
X1.136Y8.610Z-0.339
X-34.915Y6.210Z3.095
X-34.615Y6.210Z3.034
X-34.315Y6.210Z2.973
X-34.015Y6.210Z2.913
X-33.715Y6.210Z2.853
X-33.415Y6.210Z2.794
X-33.115Y6.210Z2.736
X-32.815Y6.210Z2.678
X-32.515Y6.210Z2.620

[ 本帖最后由 fanzhenjie 于 2009-4-29 16:48 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-4-29 21:25 | 显示全部楼层
这个可以试试用diff实现

评分

1

查看全部评分

 楼主| 发表于 2009-4-30 08:02 | 显示全部楼层

回复 沙发 friendchj 的帖子

是不是保证当Y相同时,如果X差分为0,则去掉这组数呀,帮我写几句命令好不好呀,不太会写呀!谢谢
 楼主| 发表于 2009-4-30 08:39 | 显示全部楼层

回复 沙发 friendchj 的帖子

我已经解决啦 ,很感谢你:
xd=diff(x77);
san=[];
for xi=1:length(xd)
    if xd(xi)==0
        san=[san,xi];
    else
        if ~isempty(san)
            x77(san+1)=NaN;
        end
    end
end
x77=x77(find(isnan(x77)~=1));
y77=y77(find(isnan(x77)~=1));
z77=z77(find(isnan(x77)~=1));

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-28 02:49 , Processed in 0.059285 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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