How to read data from text file upto some point defined by "1"?
1 次查看(过去 30 天)
显示 更早的评论
I'm trying to read data from a number of text files (using a loop) using fscanf upto some point in the file where "1" occurs. I cannot set the "size" in fscanf(fid,'%f',size) because the "1" doesn't occur at the same place in each file. Is there a way to tell Matlab to scan only upto the "1" by something like this (it helps because no data point is equal to "1"):
while fscanf(fid,'%f',1)~=1
scan=fscanf(fid,'%f')
end
3 个评论
dpb
2014-11-30
What's the form of the text? Is the objective the first character '1' and is it important to be that precise character or the line containing the character or what? What's the desired result?
So many questions, so few answers/details... :)
采纳的回答
Guillaume
2014-11-30
Assuming your file is just numbers and spaces, and that you want to stop at the first whole number equal to one (and not the 1 in 30.102 for example), no, there isn't a simpler way than using fscanf as in your example. Your while is a bit wonky though:
n = fscanf(fid, '%f', 1);
while ~isempty(n) && n~=1
scan = [scan n];
n = fscanf(fid, '%f', 1);
end
However, it may be more efficient / faster to just read the whole file and truncate the returned array at the first 1:
scan = fscanf(fid, '%f')
pos = find(scan == 1, 1);
scan(pos:end) = [];
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Low-Level File I/O 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!