필터 지우기
필터 지우기

How to extract specific rows from large data file

조회 수: 1 (최근 30일)
ariane
ariane 2018년 5월 15일
댓글: ariane 2018년 6월 4일
Hi I have a large data file (attached) and I'm only interested in rows with specific x values of 4.125 as shown below. Now because the value of 4.125 relates to the stop position of the ion, the corresponding start position is also of interest to me and I want to keep this information in the array. How do I write a program which effectively finds the x stop position of 4.125 and retains the ion start position. It is a 120982 * 9 array and in the example shown below I would be interested in keeping the information of ion # 3849096. Your assistance is most appreciated.
"Ion N","Mass","Charge","X","Y","Z","Azm","Elv","KE" 3849094,0.00054858,-1,66.5216,-51,-3.8,-180,88.7,18160 3849094,0.00054858,-1,27.3925,30.3532,-4.07076,-177.1,41.5494,17697.2 3849095,0.00054858,-1,66.5216,-51,-3.7,-180,88.7,18160 3849095,0.00054858,-1,26.6277,31.0039,-3.91402,-177.096,40.8293,17699.4 3849096,0.00054858,-1,66.5216,-51,-3.6,-180,88.7,18160 3849096,0.00054858,-1,4.125,44.9887,-2.47517,-176.363,25.715,17711.1
  댓글 수: 3
Guillaume
Guillaume 2018년 5월 15일
find is very much over used and is unlikely to be necessary.
ariane
ariane 2018년 5월 15일
Could you kindly suggest a more rigorous regime to help me locate the rows I'm interested in? Any information will be much appreciated.

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume
Guillaume 2018년 5월 15일
I wouldn't call your file large. Probably, the easiest (tested in R2018a, older versions may have a harder time detecting the import options):
opts = detectImportOptions('Z_EnergySequence.dat');
data = readtable('Z_EnergySequence.dat', opts);
filtereddata = data(data.X == -4.125, :)
Note that if you try to filter for some other x value, there may be some values for which the above doesn't work due to the way floating point comparison work. A more reliable implementation would be:
tol = 1e-6; %or some other arbitrarily small value relative to the difference of your x values
filter = -4.125;
filtereddata = data(abs(data.X - filter) < tol, :)
  댓글 수: 12
ariane
ariane 2018년 5월 18일
Great! Thank you.
ariane
ariane 2018년 6월 4일
Hi,
I have a question relating to data binning. If I wanted to bin this data by initial elevation, Kinetic energy and the ion start position (X,Y,Z), how can I go about doing this? The purpose of this would be to allow me to plot input energy/elevation versus count rate. Thank you.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Calendar에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by