I have a following text file delimited with 'tabs', that contains both strings and decimal numbers. I want to read only numbers in the text file and plot a surface between [T2,DEPTH,respective values] as [X,Y,Z]?

조회 수: 2 (최근 30일)
Hole: 123A
Top: 78.67
T2 3.34 4.26 8.16 9.84 10.01
DEPTH 0 1 2 3 4
78.67 3.38 9.28 7.86 0.00 0.00
80.52 4.68 9.27 0.00 0.00 1.24
91.50 6.66 2.34 1.23 0.00 0.00
95.67 7.88 6.88 5.43 0.00 2.34
100.01 5.44 6.54 8.23 5.01 0.00
  댓글 수: 5
KRISHNA NISHCAL BHARATULA
KRISHNA NISHCAL BHARATULA 2017년 3월 1일
This is just a part of my file. There are many rows and columns. How to read those many rows & columns where the 'FormatSpec' is changing in my data. Can you elaborate?
Thanks in Advance.
Rik
Rik 2017년 3월 1일
There must be some structure in your data, otherwise you couldn't make sense of it either. You could count the tabs in a row to figure out how many values there are on that line and assume that's the format for the entire file.
Maybe I'll take some time tomorrow to write up some code.

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

채택된 답변

KSSV
KSSV 2017년 3월 2일
fid = fopen('your data in txt file') ;
S = textscan(fid,'%s','delimiter','\n') ;
fclose(fid) ;
S = S{1} ;
%%Get positions
idx1 = find(not(cellfun('isempty',strfind(S, 'T2')))); % T2 position
idx2 = find(not(cellfun('isempty',strfind(S, 'DEPTH')))); % T2 position
idx3 = idx2:length(S) ;
%%Get the required
x = cell2mat(cellfun(@str2num,strsplit(S{idx1}),'un',0)) ;
depth = cell2mat(cellfun(@str2num,strsplit(S{idx2}),'un',0)) ;
data = cell2mat(cellfun(@str2num,S(idx3),'un',0)) ;
y = data(:,1) ;
data = data(:,2:end) ;
The above code reads your data and gives x,y,depth and respective responses. Now you can plot in the way you want.

추가 답변 (0개)

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by