Matlab:编码循环语句,减去两行数据

时间:2015-06-05 00:39:12

标签: matlab loops

我有一份来自EPA的数据集,我已将其浓缩为六列

enter image description here

第一列代表不同的public water suppliers(PWS)。第二个是sampleid number。第三个是associated sample id number。标签开头带有MR的样品表示出口点。所有其他sample IDs是具有关联MR的入口点。第四列是sample date。第五个是个人reference number。第六列是sample concentration

基本上我要完成的目标是匹配相同的PWS,相同的date,以及相同的sample IDassociate sample id,最后减去两者之间的差异{ {1}}与这些行相关联。

我的数据集是6列乘39000行。

这是我尝试过的代码:

sample concentrations

但这是我收到的错误:

  

EDU>>运行epadata错误使用== Matrix维度必须同意。

     

元数据中的错误(第10行)
              filename = fopen('Datamine2.csv'); SampleList = textscan(filename,'%s %s %s %s %s %s','Delimiter',',','EmptyValue',0); fclose(filename); results = []; for i = 1:5 if SampleList{3}{i} ~= 0 SampleID1 = SampleList{5}{i}; for j = 1:5 if SampleList{2}{j} == SampleList{3}{i} && SampleList{1}{j} == SampleList{1}{i} && SampleList{4}{j} == SampleList{4}{i} SampleID2 = SampleList{5}{j}; SampleDiff = str2double(SampleList{6}{i}) - str2double(SampleList{6}{j}); newresults = [SampleList{1}{i} SampleList{4}{i} SampleDiff SampleID1 SampleID2]; results = [results;newresults] end end end end

     

跑步时出错(第64行)if SampleList{2}{j} == SampleList{3}{i} && SampleList{1}{j} == SampleList{1}{i} && SampleList{4}{j} == SampleList{4}{i}

任何人都可以提供解决此问题的任何指导吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

您的数据采用string格式。 (班级char

使用strcmp()函数比较字符串而不是==,因为==比较两个矩阵元素,而Matrix维度必须同意进行比较。

示例:

>> strcmp('abc','ab')

ans =

 0

>> 'abc' == 'ab'
  

使用==时出错      矩阵维度必须一致。