查看: 1969|回复: 6|关注: 0

[已解决] 请教如何在一列坐标中,挑选出符合要求的坐标?

[复制链接]

新手

9 麦片

财富积分


050


12

主题

24

帖子

0

最佳答案
例如A=[1 2 3 4 5 6 7 8 9]',我想要将A中的坐标对于满足“两两相减后得到的绝对值大于4,小于6”这个条件的坐标提取出来,请问各位老师该如何写这段代码呢,谢谢指教!

论坛优秀回答者

权威

3671 麦片

财富积分



3

主题

3845

帖子

821

最佳答案
  • 关注者: 172
发表于 2018-4-24 21:22:50 | 显示全部楼层
  1. A=1:9;
  2. dis=squareform(pdist(A'));
  3. [m n]=find(dis>4&dis<6);
  4. ind=[m n]
复制代码

ind =

     6     1
     7     2
     8     3
     9     4
     1     6
     2     7
     3     8
     4     9

新手

9 麦片

财富积分


050


12

主题

24

帖子

0

最佳答案
 楼主| 发表于 2018-4-25 19:38:54 | 显示全部楼层
maple1314168 发表于 2018-4-24 21:22
ind =

     6     1

谢谢您的回答,但您可能没有理解我的意思,或许也是我给的数太凑巧了。我想要的是得到原来数组的值,不是这个数的位置,这样的话应该怎么遍呢?

论坛优秀回答者

权威

3671 麦片

财富积分



3

主题

3845

帖子

821

最佳答案
  • 关注者: 172
发表于 2018-4-25 19:42:55 | 显示全部楼层
风云第十三刀 发表于 2018-4-25 19:38
谢谢您的回答,但您可能没有理解我的意思,或许也是我给的数太凑巧了。我想要的是得到原来数组的值,不是 ...
有看代码?
你以为我给出的是凑巧?
我得到的是下标。
你随便啥代入就得到想要的。

新手

9 麦片

财富积分


050


12

主题

24

帖子

0

最佳答案
 楼主| 发表于 2018-4-25 20:00:27 | 显示全部楼层
本帖最后由 风云第十三刀 于 2018-4-25 20:19 编辑
maple1314168 发表于 2018-4-25 19:42
有看代码?
你以为我给出的是凑巧?
我得到的是下标。

不好意思,我赋值后得到后是这个结果
A=[20 24 23 35 21 29 22]
dis=squareform(pdist(A'));
[m n]=find(dis>4&dis<6);
ind=[m n]
ind =

     6     2
     2     6
我知道了,只要加个A(ind)就可以得到我想要的,但还有个问题,就是我只想得到[6 2]或是[2 6]这其中一个,有没有办法去掉重复的组合呢

论坛优秀回答者

权威

3671 麦片

财富积分



3

主题

3845

帖子

821

最佳答案
  • 关注者: 172
发表于 2018-4-25 20:24:14 | 显示全部楼层 |此回复为最佳答案
本帖最后由 maple1314168 于 2018-4-25 20:27 编辑
风云第十三刀 发表于 2018-4-25 20:00
不好意思,我赋值后得到后是这个结果
A=[20 24 23 35 21 29 22]
dis=squareform(pdist(A'));


A(unique(sort(ind,2),'rows'))
或者:
dis改为:
dis=tril(squareform(pdist(A')));


新手

9 麦片

财富积分


050


12

主题

24

帖子

0

最佳答案
 楼主| 发表于 2018-4-25 20:31:28 | 显示全部楼层
maple1314168 发表于 2018-4-25 20:24
A(unique(sort(ind,2),'rows'))
或者:
dis改为:

非常感谢,非常非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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