以下在读取" 1.2D + 02 3.23D + 01 的数据文件时工作正常...."在 matlab ;
tempvs = textscan ( input_unit, '%f', N );
tempvs = cell2mat(tempvs);
tempvs = double(tempvs);
但是,在八度音程(版本3.8.2)中同样不起作用(不承认" D"数字)所以我修改了一点如下;
tempvs = textscan ( input_unit, '%s', N );
tempvs = cell2mat(tempvs);
values = zeros(N,1);
for i = 1: N
values(i) = str2num(tempvs{i,1});
end
还有其他有效的方法来完成这项工作吗? 在此先感谢您的帮助。
注意:将数据文件更改为" 1.2E + 02 3.23E + 01 ...." form不是一个选项,已经尝试使用fgetl进行逐行读取,但速度很慢。
答案 0 :(得分:0)
fopen
该文件,一次性阅读fread(fid, "char=>char").'
并在您的文件到处都是textscan ( regexprep(input_unit,"D","E"), '%f' )
时尝试input_unit="1.2D+02 3.23D+01"
。只要您的文件适合您的RAM,这应该是非常快速的。但我不知道D
数字是什么?