| 查看: 1878 | 回复: 4 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
Matlab技术在某个圆内的点的个数 已有3人参与
|
|||
规范 |
» 猜你喜欢
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复

【答案】应助回帖
感谢参与,应助指数 +1
|
还有一个方法,跟楼上各位都不同,就是把这数据转换成两张栅格矩阵,第一张圆变成一个面状的矩阵,圆内部设为1,外部设为0。第二张图,点直接转换成1,其他区域转换成0,把两个矩阵相点乘.* 得到的结果图,我们只需统计其中1的个数即为点数 发自小木虫IOS客户端 |
4楼2015-11-24 01:38:26
dingd
铁杆木虫 (职业作家)
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.7小时
- 虫号: 291104
- 注册: 2006-10-28
2楼2015-11-23 20:38:26
onelightwang
金虫 (小有名气)
- 应助: 10 (幼儿园)
- 金币: 1706.9
- 红花: 1
- 帖子: 94
- 在线: 45.7小时
- 虫号: 3870466
- 注册: 2015-05-14
- 性别: GG
- 专业: 光学信息获取与处理
【答案】应助回帖
感谢参与,应助指数 +1
|
2楼给出了基本思路,判断各点是否在圆内,然后每个点作为圆心循环一遍即可。 不过这样循环计算量略大,若数据点数为N,基本要判断N*(N-1)次 当N很大时,计算会比较费时间。 楼主可以通过向量化来提高计算效率。 假设从数据库中提取的圆心坐标序列分别为X,Y。(X,Y都为列向量,假设长度为n) 1.构建一个矩阵【 (x_i-x_j)^2 +(y_i-y_j)^2】_nxn,通过与 r^2的差值,就可以轻易的判断某个点在半径r内的点数。 2,目标矩阵的构造可简化成【(x_i-x_j)^2 】_nxn 矩阵的构建,因为后半部分类似 3.【(x_i-x_j)^2 】_nxn的矩阵可分解为[(x_i)^2 + (x_j)^2 -2 *(x_i)*(x_j)]_nxn 4.继续分解成3个n x n矩阵,并分别实现 [(x_i)^2 ]_nxn 的实现:X.^2*ones(size(X,2),size(X,1)) [(x_j)^2 ]_nxn 的实现:(X.^2*ones(size(X,2),size(X,1)))',把上面的转置一下即可 【 -2 *(x_i)*(x_j)]_nxn的实现:-2*X*X' ok,任务完成 楼主按照4到1的顺序编程,就可以看到符合要求的点分布了,最后再用一个sum函数,就可以得到需要的结果饿了。 避免过多循环,可以提高运行速度! |
3楼2015-11-23 23:15:56
5楼2015-11-24 01:42:36












回复此楼