当前位置:网站首页>Data processing skills (7): MATLAB reads the data in the text file TXT with mixed digital strings

Data processing skills (7): MATLAB reads the data in the text file TXT with mixed digital strings

2022-07-06 22:12:00 Entertainment first 2091

The goal is

Extract the data in the text below in multiple arrays

 Insert picture description here

 Insert picture description here

Introduce

      It was introduced before in txt In the text , The content is in the case of regular columns , You can refer to : Data processing skills (5):MATLAB Read txt Data in . The last introduction mainly deals with the following two figures , Arranged in columns .
 Insert picture description here  Insert picture description here
This time, the data is more complex , Read this article directly , Each column is not so neat . It mainly deals with three situations : Pure number 、 character + Numbers 、 character + Numbers + character + The situation of numbers .

① Pure digital situation

Text file to be read :

 Insert picture description here

Determine the file path

      Judge whether the input text file path is correct , If you enter an incorrect file name , Will prompt “ Wrong confidence + File opening failure .” A hint of .
 Insert picture description here  Insert picture description here
      After entering the correct file path , End of reading data , There will be “ Successfully read file data ” A hint of .
 Insert picture description here
 Insert picture description here

matlab The result of reading data

      Open... In the workspace mdata, double-click mdata Of data Variable , You can see the read pure digital data .
 Insert picture description here
 Insert picture description here
      because matlab The table of displays by default 4 Decimal place , So it looks different . actually matlab The calculation does not just show 4 Decimal place , It can be calculated normally .
 Insert picture description here

Code block

%% purenum

%  establish data Array 
mdata.data = [];

FileLoc = "purenum.txt";   %  The path where the text file is located , If in the same folder , Just write the file name 
[datafid,datamess] = fopen(FileLoc,"r");    %  open the text file , Read only mode on 

if datafid==-1
   %  Successfully opened , Returns a non negative number ; Open failed, return -1
    disp(datamess);
    disp(" File opening failure .");
else
    tline = fgets(datafid);     %  Read the first line first 
    while tline~=-1 %  When a row of data is -1, Note that all lines of the file are traversed 
        data123 = sscanf(tline,'%f',3);   %  Find the point coordinates ( Serial number ,x,y,z), Remember to transpose 
        mdata.data=[mdata.data;data123'];  %  Stored in array 
        tline = fgets(datafid);     %  iteration , Read the next line 
    end
    fclose(datafid);   %  Close file 
    disp(" Successfully read file data .");  %  Tips 
end

② The beginning of the text , The situation after the number

Text file to be read

 Insert picture description here

matlab The result of reading data

 Insert picture description here

Code block

%% charnum
%  Create three arrays 
mdata.VArray = [];
mdata.rgb = [];
mdata.point = [];

FileLoc = "charnum2.txt";   %  The path where the text file is located , If in the same folder , Just write the file name 
[datafid,datamess] = fopen(FileLoc,"r");    %  open the text file , Read only mode on 

if datafid==-1
   %  Successfully opened , Returns a non negative number ; Open failed, return -1
    disp(datamess);
    disp(" File opening failure .");
else
    tline = fgets(datafid);     %  Read the first line first 
    while tline~=-1 %  When a row of data is -1, Note that all lines of the file are traversed 
        %  Judge the first word at the beginning of the line 
        [ln,~,~,n] = sscanf(tline,'%s',1);  %  Process this row of data 
        if ln=="Vertex"
            tline1=tline(n:end);    %  truncation - Delete Vertex
            Vxyz = sscanf(tline1,'%f',3);   %  Find the point coordinates ( Serial number ,x,y,z), Remember to transpose 
            mdata.VArray=[mdata.VArray;Vxyz'];  %  Stored in array 
        end
    
        if ln=="rgb"
            tline1=tline(n:end);    %  truncation - Delete Vertex
            Vxyz = sscanf(tline1,'%f',3);   %  Find the point coordinates ( Serial number ,x,y,z), Remember to transpose 
            mdata.rgb=[mdata.rgb;Vxyz'];  %  Stored in array 
        end
    
        if ln=="point"
            tline1=tline(n:end);    %  truncation - Delete Vertex
            Vxyz = sscanf(tline1,'%f',3);   %  Find the point coordinates ( Serial number ,x,y,z), Remember to transpose 
            mdata.point=[mdata.point;Vxyz'];  %  Stored in array 
        end
        tline = fgets(datafid);     %  iteration 
    end
    fclose(datafid);   %  Close file 
    disp(" Successfully read file data .");  %  Tips 
end

③ A line of words mixed with numbers

Files to read :

 Insert picture description here

matlab Read data results :

 Insert picture description here

Code block

%% charnumcharnum
%  Create three arrays 
mdata.VArray = [];
mdata.rgb = [];
mdata.point = [];

FileLoc = "charnumcharnum.txt";   %  The path where the text file is located , If in the same folder , Just write the file name 
[datafid,datamess] = fopen(FileLoc,"r");    %  open the text file , Read only mode on 

if datafid==-1
   %  Successfully opened , Returns a non negative number ; Open failed, return -1
    disp(datamess);
    disp(" File opening failure .");
else
    tline = fgets(datafid);     %  Read the first line first 
    while tline~=-1 %  When a row of data is -1, Note that all lines of the file are traversed 
        %  Judge the first word at the beginning of the line 
        [ln,~,~,n] = sscanf(tline,'%s',1);  %  Process this row of data 
        if ln=="Vertex"
            tline1=tline(n:end);    %  truncation - Delete Vertex
            Vxyz = sscanf(tline1,'%f',3);   %  Find the point coordinates ( Serial number ,x,y,z), Remember to transpose 
            mdata.VArray=[mdata.VArray;Vxyz'];  %  Stored in array 
            %  look for  rgb 
            k1 = strfind(tline, 'rgb');
            if k1>0
                k1=k1+3; %  Find and delete rgb Last position 
                tline1=tline(k1:end);
                rgb = sscanf(tline1,'%f',3);   %  find  rgb
                mdata.rgb=[mdata.rgb;rgb'];  %  Stored in an array 
            end
            %  look for  point 
            k2 = strfind(tline, 'point');
            if k2>0
                k2=k2+5; %  Find and delete  point  Last position 
                tline2=tline(k2:end);
                point = sscanf(tline2,'%f',3);   %  find  point
                mdata.point=[mdata.point;point'];  %  Stored in an array 
            end
        end
        tline = fgets(datafid);     %  iteration 
    end
    fclose(datafid);   %  Close file 
    disp(" Successfully read file data .");  %  Tips 
end

ending

      Through this introduction , It can be used very quickly matlab Extract data from text files , For follow-up matlab Handle . combination Data processing skills (5):MATLAB Read txt Data in It should be able to solve many problems of reading data .

原网站

版权声明
本文为[Entertainment first 2091]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061420453855.html