How to read only some columns of a text file?

2 ビュー (過去 30 日間)
Samuele Bolotta
Samuele Bolotta 2020 年 5 月 11 日
コメント済み: per isakson 2020 年 5 月 11 日
I'd like to read out only columns from 3 to 7. However, this is not working. Can you help?
Thanks!
%Get events from text file
prompt_totalfiles = 'Enter number of files you want to input: '; %asks for number of files
total_files = input(prompt_totalfiles);
fileids = cell(total_files,1);
j = 1;
Baseline_adjustment = 0.1; %put in baseline photodetector value here (the readout with the led on but the patch cable in pitch black
wholedff = cell(1, 11);
for file = 1:total_files
[inputfile,path] = uigetfile('*.txt');
fileids{file} = fopen(fullfile(path, inputfile));
if fileids{file} == -1
error('Failed to open file "%s"', fullfile(path, inputfile));
end
b = textscan(fileids{file},'%*n %*n %n %n %n %n %n', 'delimiter', '/t');
num = b{3};
epochn = b{4};
state = b{5};
count = b{6};
duration = b{7};
  1 件のコメント
Walter Roberson
Walter Roberson 2020 年 5 月 11 日
'delimiter', '\t'
Also if columns 1 and 2 might not be numeric then use %*s for them.

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

回答 (1 件)

per isakson
per isakson 2020 年 5 月 11 日
編集済み: per isakson 2020 年 5 月 11 日
The text file might have more than 7 coloums.
Replace
'%*n %*n %n %n %n %n %n'
by
'%*s%*s%n%n%n%n%n%*[^\n]'
%*[^\n]' skips to the end of line
The code doesn't include end to close the for-loop.
The result of the import might be overwritten for each iteration of the loop.
  8 件のコメント
Samuele Bolotta
Samuele Bolotta 2020 年 5 月 11 日
Ah no I actually found out the problem! I should use %2s instead of %s. Thanks!
per isakson
per isakson 2020 年 5 月 11 日
" [...] I should use %2s instead of %s." No, the problem is rather with the delimiter. I assume there is no '\t' after the six coloumn.

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

カテゴリ

Help Center および File ExchangeText Data Preparation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by