微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Octave 如何有效地比较矩阵元素

如何解决Octave 如何有效地比较矩阵元素

我有一个大矩阵,我想比较相邻元素以验证值是否接近相等。

例如,在这个序列 1006,1004,999,1000,1003,6,1005,1003 ..... 值 6 并不“接近”1003 或 1005。 我想要一种有效的方法来进行比较。

这是查找范围之外的任何内容的缓慢代码。在我的旧电脑上需要 190 秒。

谢谢。

big = 1e5;
tic;
a = 0;
x = rand(100,big);
for ii = 1:100
  for jj = 1:big-1;
    y = x(ii,jj) / x(ii,jj+1);
    if (or(y < 0.999,y > 1.001))   a++;
    endif  
  endfor;
endfor;
toc

解决方法

使用矢量化代替循环:

y = x(:,1:end-1) ./ x(:,2:end);
a = nnz(y < 0.999 | y > 1.001);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。