MATLAB Answers


reading a txt file with rows of different length

Asked by Zinat Zarandi on 21 Feb 2019
Latest activity Commented on by Zinat Zarandi on 22 Feb 2019
I would like to read a text file as below and I need to extract data in 'points' row. I have tried many ways but it didnt work.I appreciate if someone can guide me to find a solution.
Thanks in advance.


What are the 'many ways' you have tried and in what way didn't they work?
fid = fopen('5crc5sec.txt');
textLine = fgets(fid);
lineCounter = 1;
while ischar(textLine)
fprintf('\nLine #%d of text = %s\n', lineCounter, textLine);
numbers = sscanf(textLine, '%s ')
for k = 1 : length(numbers)
ca{lineCounter, k} = numbers(k);
ca2{lineCounter} = numbers;
textLine = fgets(fid);
lineCounter = lineCounter + 1;
I have found this script here and when I use this code in a cell arrey I can find data in points but in default format of text.
how can I seprate it in data?
I need to sepratet first odd num (first,third,...,n-1) as 'x' and even num (second, fourth,..,n) as 'y'.

Sign in to comment.


1 Answer

Answer by Are Mjaavatten on 22 Feb 2019

fid = fopen(filename);
lines = textscan(fid,'%s','delimiter','\n');
lines = lines{1};
% The points data are in line 3. Start after the left bracket:
points = sscanf(lines{4}(strfind(lines{4},'[')+1:end-1),'%f,');
widths = sscanf(lines{5}(strfind(lines{5},'[')+1:end-1),'%f,');
x = points(1:2:end);
y = points(2:2:end);

  1 Comment

Thank you so much. It works.

Sign in to comment.