[已解决] 如何将三维数值矩阵对应位置匹配

[复制链接]
我与神明画押 发表于 2021-11-22 17:05:42
本帖最后由 我与神明画押 于 2021-11-22 22:01 编辑

数据量比较大,找到两个样本对应位置的不同数据(忽略差值小于0.01的数据)输出下标,计算匹配率,求大佬帮帮我·~~:'( 以下是我自己码的代码,只需要对比第四列的数据就可以了,但是for循环却不执行,大佬帮我看看哪有毛病了
S=m(1:4143,4)
W=z(1:4143,4)
M=S.'
N=W.'
C=bsxfun(@minus,M,N)
result=[];
for i=1:4143
       if C(i)>0.1000
          result=[result,i]
       end
end

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

最佳答案


lyqmath 发表于 2021-11-23 09:25:21
符合条件的是空数据

  1. clc; clear all; close all;
  2. m = importdata('wuli.txt');
  3. z = importdata('chuanre.txt');
  4. S=m.data(:,4);
  5. W=z.data(:,4);
  6. % 对应位置的不同数据(忽略差值小于0.01的数据)输出下标,计算匹配率
  7. % 对比第四列的数据
  8. dis = abs(S-W);
  9. ind = find(dis>=0.01);
  10. rate = length(ind)/length(dis)*100;
  11. % 显示结果
  12. disp('第4列,对应位置的差值超过0.01的数据,具体位置为');
  13. disp(ind)
  14. disp('匹配率为')
  15. disp(rate)
复制代码
回复此楼

4 条回复


lyqmath 发表于 2021-11-23 09:25:21
符合条件的是空数据

  1. clc; clear all; close all;
  2. m = importdata('wuli.txt');
  3. z = importdata('chuanre.txt');
  4. S=m.data(:,4);
  5. W=z.data(:,4);
  6. % 对应位置的不同数据(忽略差值小于0.01的数据)输出下标,计算匹配率
  7. % 对比第四列的数据
  8. dis = abs(S-W);
  9. ind = find(dis>=0.01);
  10. rate = length(ind)/length(dis)*100;
  11. % 显示结果
  12. disp('第4列,对应位置的差值超过0.01的数据,具体位置为');
  13. disp(ind)
  14. disp('匹配率为')
  15. disp(rate)
复制代码
回复此楼

我与神明画押 发表于 2021-11-23 10:42:17
lyqmath 发表于 2021-11-23 09:25
符合条件的是空数据

首先感谢大佬的解答,但是importdata导入的是第一行标号X,Y,Z,T,不是下面的数值

我与神明画押 发表于 2021-11-23 11:06:58
lyqmath 发表于 2021-11-23 09:25
符合条件的是空数据

我觉得还是dis>=0.01那里的问题吧,我不太清楚matlab对精度有没有什么要求?我以你的方法改了下,就是到ind输出为0,导致后面匹配率也就是0

lyqmath 发表于 2021-11-23 11:55:26
我与神明画押 发表于 2021-11-23 11:06
我觉得还是dis>=0.01那里的问题吧,我不太清楚matlab对精度有没有什么要求?我以你的方法改了下,就是到i ...

是的,可以调低一下,例如 1e-7
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表