I want the values of row 3 and 4 (=x and y) as shown in the data below. This is my Matlab code that I am trying to convert:
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开发者_JAVA技巧
x=fileContents(5);
y=fileContents(6);
Can someone help to extract those values of <x>
and <y>
given in rows 3 and 4 of the data file pasted below.
<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>
Instead of reading in the entire file contents and parsing them, it's possible to use TEXTSCAN to just read the values you want from the file:
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
精彩评论