search in large cell file

3 次查看(过去 30 天)
Frank Oosterveld
Frank Oosterveld 2020-10-27
回答: Jan 2020-10-27
Hi all,
I'm looking for a function such that I can acces the following text in my SSD file (attached)
THE FOLLOWING TABLE IS PRINTED FOR NODES BELONGING TO NODE SET ASSEMBLY_DISPLACEMENT_NODE,
I open my SSD file according to:
clear all, clc, format longG
Counter = 1;
FID = fopen('SSD_anal - Copy.dat', 'rt');
tline = fgetl(FID);
File_Data{Counter} = tline;
while ischar(tline)
Counter = Counter+1;
tline = fgetl(FID);
File_Data{Counter} = tline;
end
fclose(FID);
File_Data = File_Data';
Which brings me a cell 76540x1 cell, I tried to find the indices by:
Index = find(contains(File_Data,'THE FOLLOWING TABLE IS PRINTED FOR NODES BELONGING TO NODE SET ASSEMBLY_DISPLACEMENT_NODE'));
and
IndexC = strfind(File_Data,'THE FOLLOWING TABLE IS PRINTED FOR NODES BELONGING TO NODE SET ASSEMBLY_DISPLACEMENT_NODE');
but nothing works, as it states that:
Error using strfind
Cell must be a cell array of character vectors.
Any clues how I could find the indices where the file states the statement above?
greetings and thanks for your help and attention already!

采纳的回答

Jan
Jan 2020-10-27
In the loop all lines are stored in the cell an the loops stops, if the last one was not a CHAR. This means, that the last element of the cell is not a CHAR, exactly as the error message tells you.
Either remove the last element:
File_Data(end) = [];
or use a more compact method to import the text:
S = fileread('SSD_anal - Copy.dat');
File_Data = strsplit(S, char(10));

更多回答(0 个)

类别

Help CenterFile 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!

Translated by