フィルターのクリア

Secify what is the end of a line using textscan?

4 ビュー (過去 30 日間)
kschau
kschau 2013 年 5 月 8 日
I have a .dat file with varied spacing between a series of numbers. I want to be able to jump to any one of these numbers using textscan with its 'headerlines' feature. The problem is, I need to specify that each separate number should be a new line. That way if is use 'headerlines',2 in textscan it will skip the first two numbers and go from there.
My .dat file starts like this
1 55 63 78 45.6 34.6 45.7 23.5 23.7 34.5 23.6 ...
how can I make textscan see line one as 1... line two as 55... line three as 63... line four as 78 etc? I know about the 'EndOfLine' feature and have tried everything with that but it's still not giving me what I need.
Thanks
-Kyle

採用された回答

Walter Roberson
Walter Roberson 2013 年 5 月 8 日
I would not do it that way. What I would do is something like:
fid = fopen(YourFileName, 'rt');
wantpos = 3; %want 3rd number
fmt = [repmat('%*f', 1, wantpos-1), '%f'];
datacell = textscan(fid, fmt, 1);
wantednum = datacell{1};
fclose(fid);
This can be used even if you have fewer numbers per line than "wantpos": it will read as many lines as it needs to in order to get the proper number.
Afterwards the file will be positioned right after the number that was read.
  2 件のコメント
kschau
kschau 2013 年 5 月 8 日
Trying to implement your solution but I cant get it to output anything but NaN. Here is my code
fid=fopen('dummy.dat');
wantpos=3;
fmt = [repmat('%*f', 1, wantpos-1), '%f'];
datacell = textscan(fid, fmt, 1);
U = datacell{1}
Thanks for the help!
Walter Roberson
Walter Roberson 2013 年 5 月 8 日
When I use the string you gave, it works for me. Is it certain that the data is separated by spaces? And why did you remove the 'rt' from the fopen() ? Try this:
fid = fopen('dummy.dat', 'r');
data = fread(fid, 20, '*uint8');
fclose(fid)
and then disp(data) and show us what it indicates

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLarge Files and Big Data についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by