查看: 135|回复: 8|关注: 0

[已解决] 已知坐标合并并输出中点应该如何做?

[复制链接]

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
已知200个坐标,想要将距离小于1的两处坐标合并,并用他们的中点表示,应该怎么做?
QQ截图20200517232155.jpg
回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

177 麦片

财富积分


50500


4

主题

107

帖子

24

最佳答案
  • 关注者: 2
发表于 2020-5-18 08:14:16 | 显示全部楼层
根据你的贴图点是有顺序的,你最好把数据贴出来,那么距离为小于1合并为中点,如果相邻的多个点ABCD等,AB距离小于1,BC距离小于1,CD距离也小于1,这种情况是想要怎样的结果呢,是ABCD四个取中点还是AB取中点,CD取中点,抑或是AB取中点的结果与C判断距离是否小于1,等等。不说清楚情况太多。
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

177 麦片

财富积分


50500


4

主题

107

帖子

24

最佳答案
  • 关注者: 2
发表于 2020-5-18 08:42:25 | 显示全部楼层 |此回复为最佳答案
clear;
clc;
x=linspace(1,50,200);
y=50*rand(200,1);

numM=3;
xnew=[x(1)];
ynew=[y(1)];
for i=2:numel(x)
    d(i-1,1)=norm([x(i),y(i)]-[x(i-1),y(i-1)]);
    if norm([x(i),y(i)]-[xnew(end),ynew(end)])<numM
        xnew(end)=mean([xnew(end),x(i)]);
        ynew(end)=mean([ynew(end),y(i)]);
    else
        xnew=[xnew;x(i)];
        ynew=[ynew;y(i)];        
    end
end


plot(x,y,'r.-')
hold on
plot(xnew,ynew,'bo-')
axis equal;
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-5-18 09:52:57 | 显示全部楼层
15631202458 发表于 2020-5-18 08:14
根据你的贴图点是有顺序的,你最好把数据贴出来,那么距离为小于1合并为中点,如果相邻的多个点ABCD等,AB ...

这是数据,里面是有重复的,贴图中左图是我按照升序重新排了数据,得到的图。实际上应该是根据散点图,合并距离小于1的点,输出他们中点
        V1        V2
1        35.1        36.5
2        34.9        34.9
3        39.3        40.9
4        34.3        39.3
5        38.1        30.3
6        41.1        35.1
7        36.7        37.5
8        32.3        33.5
9        33.7        40.9
10        36.5        36.3
11        35.5        35.1
12        36.3        34.5
13        34.5        37.3
14        36.7        33.9
15        34.9        35.3
16        36.9        36.1
17        39.9        38.5
18        36.5        35.5
19        35.3        35.5
20        34.7        35.1
21        33.1        39.7
22        34.9        35.3
23        33.7        35.9
24        32.5        36.5
25        19.6        24.1
26        21        25.9
27        19.6        26.7
28        20        22.9
29        20.2        22.9
30        23.4        22.5
31        23        22.7
32        21.8        23.5
33        22.2        27.7
34        25        25.5
35        18.2        21.1
36        19        23.7
37        21.4        25.9
38        21.2        28.1
39        17.4        24.3
40        21.2        24.5
41        23.8        28.3
42        19.4        25.1
43        24.2        29.5
44        21.4        23.1
45        47.9        40
46        43.3        37.8
47        42.7        35
48        41.1        32.2
49        47.5        36.6
50        43.3        38.8
51        44.3        36.2
52        45.5        39.8
53        42.3        36.8
54        45.7        35.8
55        43.7        35.6
56        43.5        35.8
57        41.5        38.6
58        46.5        35.2
59        43.3        35
60        42.3        35.8
61        44.3        35.6
62        42.9        36.6
63        44.3        35.6
64        9.7        19.9
65        2.9        20.3
66        3.9        17.5
67        5.7        18.9
68        5.7        17.7
69        6.7        17.5
70        5.5        17.3
71        7.1        17.9
72        5.7        16.5
73        5.7        15.9
74        6.5        17.9
75        3.9        16.5
76        6.3        15.9
77        5.3        11.9
78        6.9        13.1
79        5.9        18.7
80        4.5        21.5
81        6.9        21.9
82        5.9        18.1
83        1.3        17.1
84        7.9        19.3
85        7.4        30.5
86        7.2        28.5
87        7.6        29.9
88        6.6        29.7
89        10.6        28.1
90        9.4        30.1
91        9        28.3
92        10.8        30.7
93        8.8        29.9
94        7.6        31.7
95        11.6        29.7
96        9.2        34.7
97        13.4        30.5
98        7        29.1
99        7.8        32.3
100        9        32.1
101        10        29.1
102        10.6        28.3
103        5.8        27.7
104        7.4        32.1
105        13        26.3
106        9        27.5
107        25        33
108        26.2        33.6
109        21.4        33
110        25.2        35.6
111        26        34.8
112        26.4        35
113        24.6        33.2
114        26.8        34.8
115        27.2        36.2
116        25        33.6
117        22.6        34.2
118        25        33.2
119        26.8        30.6
120        27.4        32.6
121        25.2        31
122        26        33.4
123        27.6        32
124        28.4        35.6
125        26.6        35.8
126        27.4        33.8
127        10.7        21
128        8.3        28.2
129        13.3        30.2
130        8.9        27.2
131        7.1        25.6
132        10.1        26.6
133        13.3        27.4
134        11.3        29.2
135        10.5        25.6
136        9.3        28.4
137        10.5        30.2
138        11.1        24.4
139        12.1        26.8
140        10.5        28.4
141        8.9        22.8
142        11.1        29.2
143        10.3        28.6
144        10.5        27.4
145        5.9        26.8
146        12.5        24.8
147        12.7        27.6
148        11.3        27.4
149        11.3        26.8
150        10.7        28.2
151        32.5        15.9
152        28.7        15.7
153        27.7        13.3
154        34.7        16.5
155        29.3        16.5
156        30.7        17.3
157        30.5        11.3
158        29.5        12.7
159        28.1        14.3
160        33.7        14.5
161        32.1        12.5
162        30.3        16.3
163        34.7        14.3
164        31.3        14.3
165        31.7        15.1
166        30.7        14.3
167        34.5        18.1
168        29.1        12.7
169        28.1        12.1
170        29.1        13.3
171        32.7        15.1
172        28.1        16.3
172        8.9        27.2
174        7.1        25.6
175        10.1        26.6
176        13.3        27.4
177        11.3        29.2
178        10.5        25.6
179        9.3        28.4
180        10.5        30.2
181        11.1        24.4
182        12.1        26.8
183        10.5        28.4
184        8.9        22.8
185        11.1        29.2
186        10.3        28.6
187        10.5        27.4
188        5.9        26.8
189        12.5        24.8
190        7.6        31.7
191        11.6        29.7
192        9.2        34.7
193        13.4        30.5
194        7        29.1
195        7.8        32.3
196        42.3        36.8
197        45.7        35.8
198        43.7        35.6
199        43.5        35.8
200        41.5        38.6
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-5-18 10:21:45 | 显示全部楼层
是否可以用最小生成树来做?
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

177 麦片

财富积分


50500


4

主题

107

帖子

24

最佳答案
  • 关注者: 2
发表于 2020-5-18 11:56:20 | 显示全部楼层
一白 发表于 2020-5-18 09:52
这是数据,里面是有重复的,贴图中左图是我按照升序重新排了数据,得到的图。实际上应该是根据散点图,合 ...

clear;
clc;
%% 读取数据
temp0=textread('C:\Users\LENOVO\Desktop\temp.txt');
%只选2,3列
%temp=temp0(:,2:3);
%排序
[B,I]=sort(temp0(:,2));
temp=temp0(I,2:3);
% 去重复数据 方法很多
DT = delaunayTriangulation(temp(:,1),temp(:,2));
[B,I]=sort(DT.Points(:,1));

% temp1 为去重后的数据
temp1=DT.Points(I,:);
temp1y=temp1;
%% 处理  
i=1;
while i<=length(temp1)
    for j=i:length(temp1)
        Dis(j)=norm(temp1(i,:)-temp1(j,:));
    end
    %pause
    i;
    t=find(Dis<1&Dis>0);
    if isempty(t)     
        i=i+1;
    else
        % 求几个点的平均值,当多点距离都小于1时,采取多点归一
        tempx=mean(temp1([i,t],1));
        tempy=mean(temp1([i,t],2));
        %替换当前点为中点坐标
        temp1(i,:)=[tempx,tempy];
        %删除其他点
        temp1(t,:)=[];
        i=i+1;
    end
    clear Dis
end
%% 绘图
plot(temp1y(:,1),temp1y(:,2),'r.')
hold on
plot(temp1(:,1),temp1(:,2),'bo')
axis equal;
grid on;

figure
DT = delaunayTriangulation(temp1y(:,1),temp1y(:,2));
DT1 = delaunayTriangulation(temp1(:,1),temp1(:,2));
%voronoi(DT)
plot(DT.Points(:,1),DT.Points(:,2),'r.')
hold on
voronoi(DT1)
plot(DT1.Points(:,1),DT1.Points(:,2),'bo')
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-5-23 11:09:11 | 显示全部楼层
15631202458 发表于 2020-5-18 08:42
clear;
clc;
x=linspace(1,50,200);

很抱歉 又来打扰您 只是我是个小白,看这个程序看了老长时间:'(:'(想知道最后画图时 红点 蓝圈究竟表示什么,又怎么输出我要的合并后的坐标呢?
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-5-23 11:18:55 | 显示全部楼层
一白 发表于 2020-5-23 11:09
很抱歉 又来打扰您 只是我是个小白,看这个程序看了老长时间想知道最后画图时 红点 蓝圈究竟表示什 ...

蓝圈所在的坐标,就是我要得到的中点坐标?
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-5-23 12:06:08 | 显示全部楼层
一白 发表于 2020-5-23 11:18
蓝圈所在的坐标,就是我要得到的中点坐标?

多方实验,弄好了 嘿嘿嘿
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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