如何解决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 举报,一经查实,本站将立刻删除。