Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 比较.DBF文件中的字符数_String_Matlab_Notepad++ - Fatal编程技术网

String 比较.DBF文件中的字符数

String 比较.DBF文件中的字符数,string,matlab,notepad++,String,Matlab,Notepad++,我在matlab中实现了数据导入,将非常大的*.DBF文件加载到我的工作空间中。现在我正在尝试验证,我导入的数据是否与原始数据相同。我的想法是只计算导入的单元格数组中的字符数,并将其与使用view->summary时记事本++计算的字符数进行比较。 为了在matlab中导入文件,我使用了以下代码: fid = fopen(fullFileName,'r','n','UTF-8'); % used the UTF-8 Option, because otherwise matlab wouldn'

我在matlab中实现了数据导入,将非常大的*.DBF文件加载到我的工作空间中。现在我正在尝试验证,我导入的数据是否与原始数据相同。我的想法是只计算导入的单元格数组中的字符数,并将其与使用view->summary时记事本++计算的字符数进行比较。 为了在matlab中导入文件,我使用了以下代码:

fid = fopen(fullFileName,'r','n','UTF-8'); % used the UTF-8 Option, because otherwise matlab wouldn't recognise german characters like ä,ö,ü
formatSpec=repmat('%s ',1,numberOfColumns); % numberOfColumns is 62 in my chase
data = textscan(fid,formatSpec,'Delimiter','|');
fclose(fid);
data=horzcat(data{:});
numberOfCharacters=sum(sum(cellfun(@length,data)))+size(data,1)+size(data,1)*(size(data,2)-1);
现在,为了计算字符数,我使用了以下代码:

fid = fopen(fullFileName,'r','n','UTF-8'); % used the UTF-8 Option, because otherwise matlab wouldn't recognise german characters like ä,ö,ü
formatSpec=repmat('%s ',1,numberOfColumns); % numberOfColumns is 62 in my chase
data = textscan(fid,formatSpec,'Delimiter','|');
fclose(fid);
data=horzcat(data{:});
numberOfCharacters=sum(sum(cellfun(@length,data)))+size(data,1)+size(data,1)*(size(data,2)-1);
这里的第一个和是每个单元格中的字符数。我不得不添加第二个summand,因为记事本将换行符计算为字符。第三个和是记事本也计算的分隔符数。 现在结果将是 19.489.252在记事本和 Matlab中的19.485.889 如您所见,与使用的字符数量相比,差异非常小。但我还是想知道是什么原因造成的。 我已经检查了Notepad++中使用answer的非ASCII字符数。非ASCII字符的计数正确。
不幸的是,我无法提供数据供您测试。因此,对于一个答案,我很乐意听到任何可能导致性格数量差异的建议。另一种证明matlab导入的数据与原始数据相同的方法也是受欢迎的。

Npp将windows linebreak ie\r\n计算为2个字符。有些像üorö这样带有变音符号的字符也被算作2个字符。@toto有没有办法阻止Npp这么做?如果没有,你能把我链接到一个我能读到Npp如何计算字符数的地方吗?@toto我还想解释一下“当前文档长度”和“没有空格的字符”之间的区别。我倾向于认为后者不把空格算作字符,但实际上是这样。我不知道有什么方法可以改变这个beaviour。ö实际上是2个字符长,它的十六进制表示是C3B6,而ü是C3BC。第二个问题我没有答案。您可以在Npp@toto的官方论坛上找到一些答案。好的,非常感谢您我已经发现,没有空格的字符不能算作2个字符,所以这将是我的方法。