Reading numerical data from text fles with string

1 回表示 (過去 30 日間)
fadzhi
fadzhi 2021 年 2 月 1 日
コメント済み: Mathieu NOE 2021 年 2 月 2 日
Dear all,
I will really appreciate f you help me out in this regards. I am using follwing code to read multiple text files and genrating a data based on specific columns. I now wanted to read the numeric values from line 10 and 11 and place them in first and column of data and repeat them for all the values of a specific cell array. Based on new cell array, the values should change till the end of that array and so on.....
clear;
D = 'T:\Intelli_test\New\files';
S = dir(fullfile(D, '*.txt'));
N = length(S);
% A = cell(N,1);
fmt = '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f';
for k = 1:N
fid = fopen(fullfile(D,S(k).name), 'r');
A(k)= textscan(fid, fmt, 'Delimiter', '\t', ...
'headerlines', 33, ...
'CollectOutput', 1);
fid=fclose(fid);
M = vertcat(A{:});
out = M(:,[9,11]);
data=out;
end
i am now trying to add a loop like this to get the values but i am getting nothing
for k = 1:N
fid = fopen(fullfile(D,S(k).name), 'r');
linenum = 10;
h(k)= textscan(fid,'%f',1,'delimiter','\n', 'headerlines',linenum-1);
fid=fclose(fid);
end
  1 件のコメント
Stephen23
Stephen23 2021 年 2 月 1 日
編集済み: Stephen23 2021 年 2 月 2 日
Note that this line
M = vertcat(A{:});
and the ones that follow it until the end of the loop should go after the loop.
There is no point in calling them inside the loop like that.

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

採用された回答

Mathieu NOE
Mathieu NOE 2021 年 2 月 1 日
hello
my suggestion for the second part of your code , assuming you specify the lines to be read :
n_lines = [10 11]; % define lines to read
for k = 1:N
fid = fopen(fullfile(D,S(k).name), 'r'); % open file
result = cell(1,numel(n_lines));
for n = 1:numel(n_lines)
result(n) = textscan(fid, '%s', 1, 'Headerlines', n_lines(n)-1, 'Delimiter' ,'');
frewind(fid) % set file position back to the start
end
result = [result{:}]; % unbox from cells
fclose(fid); % close file
end
  6 件のコメント
Mathieu NOE
Mathieu NOE 2021 年 2 月 2 日
can you share th txt file that generates this error ?
can you copy the output of whos from your workspace ? I'm interested to see what is in vraibales str and tmp ...
tx
fadzhi
fadzhi 2021 年 2 月 2 日
i have attached the files and whos
Name Size Bytes Class Attributes
A 9x1 970344 cell
D 1x25 50 char
M 6732x18 969408 double
N 1x1 8 double
S 9x1 8061 struct
data 4386x2 70176 double
fid 1x1 8 double
fmt 1x36 72 char
k 1x1 8 double
n 1x1 8 double
n_lines 1x2 16 double
out 6732x2 107712 double
result 9x2 144 double
str 1x1 258 cell
tmp 0x0 0 cell

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

その他の回答 (1 件)

fadzhi
fadzhi 2021 年 2 月 2 日
I found out that the units are problematic....I want to extract Dehnrate which also has a unit 1/s, 'Dehnrate: 10.0 [1/s] ', so i think somehow this 1 is problematic because it works for other quantities
  4 件のコメント
fadzhi
fadzhi 2021 年 2 月 2 日
Many thanks...working fine
Mathieu NOE
Mathieu NOE 2021 年 2 月 2 日
Glad it helped !

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

カテゴリ

Help Center および File ExchangeData Import and Export についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by