Как преобразовать значения в строке ячейки в вектор в Matlab

Мне нужны значения строк 3 и 4 (= x и y), как показано в данных ниже. Это мой код Matlab, который я пытаюсь преобразовать:

fid = fopen('experimental_var.dat');

%# read it into one big array, row by row
fileContents = textscan(fid,'%s','Delimiter','\n');
fileContents = fileContents{1};
fclose(fid); %# don't forget to close the file again

x=fileContents(5);
y=fileContents(6);

Может ли кто-нибудь помочь извлечь эти значения <x> и <y>, указанные в строках 3 и 4 файла данных, вставленного ниже.

    <title>(0.707107, 0.707107, 0)</title>
    <direction>0.707107 0.707107 0 </direction>
    <x>1.41421 2.82843 4.24264 5.65685 7.07107 8.48528 9.89949 11.3137 12.7279 14.1421 15.5563 16.9706 18.3848 19.799 21.2132 22.6274 24.0416 25.4558 </x>
    <y>2.08978 3.09925 4.80142 7.05703 9.66079 12.56 15.5897 18.6189 21.5112 24.1628 26.4319 28.2853 29.7518 30.7296 31.3153 31.5626 31.5141 31.2843 </y>
    <pairs>11781 11564 11349 11136 10925 10716 10509 10304 10101 9900 9701 9504 9309 9116 8925 8736 8549 8364     </pairs>

person Community    schedule 21.03.2011    source источник


Ответы (1)


Вместо чтения всего содержимого файла и его разбора можно использовать TEXTSCAN просто прочитать нужные значения из файла:

fid = fopen('experimental_var.dat','r');       %# Open the file
x = textscan(fid,'%f','HeaderLines',4,...      %# Ignore 4 header lines
             'Delimiter',' </x>',...           %# Add <x> and </x> as delimiters
             'MultipleDelimsAsOne',true);      %# Combine delimiters into one
y = textscan(fid,'%f','Delimiter',' </y>',...  %# Add <y> and </y> as delimiters
             'MultipleDelimsAsOne',true);      %# Combine delimiters into one
fclose(fid);                                   %# Close the file
x = x{1};     %# Remove the cell array encapsulation
y = y{1};     %# Remove the cell array encapsulation
person gnovice    schedule 21.03.2011