解决这个问题的基本工作流程可以描述如下 –

>对所有非零点进行排序.

>从最高值开始,并将其N邻域内的所有非零点设置为零.

>对第二个最高点进行相同操作,并将其N邻域内的所有非零点设置为零,排除非零值,其值高于当前值.这个排除部分可以通过代码中非常有用的MATLAB工具triu来实现.

>继续,直到覆盖每个非零点.当然,当我们沿着这个阶梯向下移动时,由于前面讨论过的排除条款,搜索的点数会更少.

这些步骤可以使用矢量化方法实现,不使用特殊工具箱并假设A作为输入 –

%// Distance parameter

N = 2;

%// Find all non-zero points and then sort them in descending manner

[x,y] = find(A~=0)

pts = [x y]

[val,sorted_idx] = sort(A(A~=0),'descend')

pts = pts(sorted_idx,:)

%// Find euclidean distances

distmat = sqrt(squared_dist(pts,pts))

%// Find points to be removed (set to zero); then calculate their linear indices

rm_pts = pts(any(triu(distmat

rm_lin_idx = sub2ind(size(A),rm_pts(:,1),rm_pts(:,2))

%// Use those linear indices to set those in the input as zeros

out = A;

out(rm_lin_idx) = 0;

相关的功能代码(找到平方的欧氏距离) –

function sq_distmat = squared_dist(A,B)

[nA,dim] = size(A);

nB = size(B,1);

A_ext = ones(nA,dim*3);

A_ext(:,2:3:end) = -2*A;

A_ext(:,3:3:end) = A.^2;

B_ext = ones(nB,dim*3);

B_ext(:,1:3:end) = B.^2;

B_ext(:,2:3:end) = B;

sq_distmat = A_ext * B_ext.';

return;

代码运行 –

A =

0 0 0 0.9000 0 0

0 0 0.2000 0 0 0.5000

0 0 0.7000 0 0 0

0 0.4000 0.1000 0 0 0

out =

0 0 0 0.9000 0 0

0 0 0 0 0 0.5000

0 0 0.7000 0 0 0

0 0 0 0 0 0

matlab中的矩阵元素错位,matlab – 如何将矩阵中较弱元素附近的弱元素归零?相关推荐

  1. matlab产生一组均为一的矩阵,在matlab中如何从一组数中得到随机数组成一个n*n的矩阵...

    导航:网站首页 > 在matlab中如何从一组数中得到随机数组成一个n*n的矩阵 时间:2019-3-15 在matlab中如何从一组数中得到随机数组成一个n*n的矩阵 从1,2,3,4,5,6 ...

  2. matlab矩阵 代表什么,matlab中矩阵AB是什么意思

    Q1:matlab矩阵中的'代表什么意思 A(1)是指矩阵中的第一个元素. matlab中矩阵的排列是按照从上往下,从左往右的: 比如说,一列数,给转化为矩阵,排列如下: >> a=1:1 ...

  3. matlab中如何用数组绘图,matlab 基础学习(1)——数组,矩阵操作和绘图基础学习...

    一维数组(创建,赋值,取值,分割取值,四则运算等操作) 创建一维数组 >> A=[] %创建空的数组 >> B=[1 2 3 4 5] %两种创建行向量,数组的方式 >& ...

  4. matlab指针矩阵乘法,为什么MATLAB在矩阵乘法中速度这么快?

    这类问题是反复出现的,应该比"Matlab使用高度优化的库"或"Matlab使用MKL"一次更清楚地回答堆栈溢出. 历史: 矩阵乘法(与矩阵向量.向量乘法和许多 ...

  5. matlab 矩阵角标,MATLAB中的矩阵索引

    MATLAB中的矩阵索引 作者:SteveEddins and Loren Shure   译:王茂春 利用矩阵的索引取出原矩阵的子集元素是一种有效的方式.MATLAB的多种索引类型不仅强大.灵活,而 ...

  6. matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)

    在日常计算,工作中使用MATLAB经常会遇到这样的一个问题:如何统计数组中各数字(元素)出现的频数.频率和累积频率?本文就按照案例演示的方式做一个总结. 第一种方法:调用MATLAB自带的函数tabu ...

  7. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  8. matlab矩阵对某一列求和,将矩阵中的每一列与另一列中的对应行相乘,然后在Matlab中求和...

    可以说我有矩阵A = [1 2; 3 4], B = [4 3; 2 1]. 我想将矩阵A ([1; 3], [2; 4])中的每一列乘以矩阵B ([4 3], [2 1])中的相应行,并对得出的矩阵 ...

  9. matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用

    1 提出问题 在现代光学技术中,从基本的光学元件增反膜和增透膜[1],到超快光路中用来补偿飞秒激光色散的啁啾镜,以及半导体微腔领域中广泛使用的分布式布拉格反射器(DBR)[2],这些光学元件基本的特征 ...

  10. 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和

    在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和 先创建一个新的脚本,并保存,在编辑器中进行编辑.具体如图,以5阶方阵为例: a=zeros(5,5): for i=(1 ...

最新文章

  1. 使用 IntelliJ IDEA 查看类图,内容极度舒适
  2. 渴望订阅– RxJava常见问题解答
  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]47.什么是Fiat-Shamir变换?
  4. mysql getline_getMessage(),getFile,getLine获取异常用法
  5. xml文件转换成图片_怎样能把PDF文件转换成图片?
  6. 专题导读:学术大数据
  7. php根据地理位置签到,微信小程序获取地理位置实现定位签到功能
  8. JavaScript_8_比较,条件语句
  9. 如何将显示器连接到 Mac?
  10. iOS - Label 数字动态变化
  11. UITableView 删除cell
  12. memcache php 到期时间,Memcache PHP会话调优:memcache如何过期密钥?
  13. 群体遗传进化专题之选择性清除分析
  14. 支付沙箱环境测试和验签
  15. 计算机应用基础难点,计算机应用基础(本科)重、难点
  16. 综合素质计算机考点,教师资格综合素质考前必背知识点:基本能力
  17. 计算机组成原理(王道精讲课 + 天勤高分笔记) note
  18. 雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)
  19. Java解析XML数据(三)——强大的XOM之simple-xml解析
  20. 【Linux学习】基础IO

热门文章

  1. 190226每日一句
  2. Image Pyramids
  3. Atitit 程序设计概论 艾提拉著作 目录 1. 界面ui设计 1 2. 编程语言部分 1 3. 面向对象的程序设计 1 4. 算法章节 数据结构 1 5. 第21章 标准库 2 5.1. 文件i
  4. Atitit 分布式文件系统总结 fastdfs nfs smb webdav ftp 目录 1.1. webdav 是个好的方案。。。Server client都有 1 1.2. ftp也方便ja
  5. Atitit webdav 的问题 -------------大文件传输问题 在某些版本的 Windows 操作系统中,WebDAV 驱动器的最大文件大小被限制为 50MB。如果你试图复制超过 5
  6. atitit.session的原理以及设计 java php实现的异同
  7. paip.java 注解的详细使用代码
  8. paip. http 405 的解决..
  9. 高费率基金是投资者的毒药
  10. Rust: codewars的DNA to RNA Conversion