ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Matlab中使用容差为类似数据点求平均值

2022-03-19 09:02:37  阅读:199  来源: 互联网

标签:点求 容差 aveA xy Matlab ia true 坐标


        如何使用 uniquetol 来为具有类似(在容差范围内)的 x 和 y 坐标的三维点求平均 z 坐标。

        使用通过 peaks 函数在 [−3,3]×[−3,3] 域内选取的随机点作为数据集。向数据中添加少量干扰。

xy = rand(10000,2)*6-3; 
z = peaks(xy(:,1),xy(:,2)) + 0.5-rand(10000,1);
A = [xy z];
plot3(A(:,1), A(:,2), A(:,3), '.')
view(-28,32)

        使用以下选项,通过 uniquetol 查找具有类似 x 和 y 坐标的点:

  • 将 ByRows 指定为 true,因为 A 的行包含点坐标。

  • 将 OutputAllIndices 指定为 true,以返回在彼此容差范围内的所有点的索引。

  • 将 DataScale 指定为 [1 1 Inf],以将绝对容差用于 x 和 y 坐标,同时忽略 z 坐标。

DS = [1 1 Inf];
[C,ia] = uniquetol(A, 0.3, 'ByRows', true, ...
    'OutputAllIndices', true, 'DataScale', DS);

        为在容差范围内的每组点求平均值(包括 z 坐标),从而生成仍保持原始数据大致形状的约简数据集。

for k = 1:length(ia)
    aveA(k,:) = mean(A(ia{k},:),1); 
end

        在原始数据的上方标绘生成的平均点。

hold on
plot3(aveA(:,1), aveA(:,2), aveA(:,3), '.r', 'MarkerSize', 15)

        则:

xy = rand(10000,2)*6-3; 
z = peaks(xy(:,1),xy(:,2)) + 0.5-rand(10000,1);
A = [xy z];
plot3(A(:,1), A(:,2), A(:,3), '.')
view(-28,32)

DS = [1 1 Inf];
[C,ia] = uniquetol(A, 0.3, 'ByRows', true, ...
    'OutputAllIndices', true, 'DataScale', DS);

for k = 1:length(ia)
    aveA(k,:) = mean(A(ia{k},:),1); 
end

hold on
plot3(aveA(:,1), aveA(:,2), aveA(:,3), '.r', 'MarkerSize', 15)

标签:点求,容差,aveA,xy,Matlab,ia,true,坐标
来源: https://blog.csdn.net/jk_101/article/details/110861884

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有