per isakson asked . 2022-04-04

What is the fastest way to extract data from a huge text file?

I have a text file like this:

 

     1.0            IONOSPHERE MAPS     GNSS                IONEX VERSION / TYPE
ADDNEQ2 V5.3        AIUB                03-JUL-14 20:57     PGM / RUN BY / DATE 
CODE'S GLOBAL IONOSPHERE MAPS FOR DAY 180, 2014             COMMENT             
Global ionosphere maps (GIM) are generated on a daily basis DESCRIPTION         
(I don't want this part)
.
.
.
(skip 600 lines)
    1                                                      START OF TEC MAP    
  2014     6    29     0     0     0                        EPOCH OF CURRENT MAP
    87.5-180.0 180.0   5.0 450.0                            LAT/LON1/LON2/DLON/H
  154  154  155  155  155  156  156  156  156  155  155  155  154  154  153  153
  152  151  150  149  148  147  146  145  145  144  143  142  141  140  139  139
  138  138  137  137  137  137  136  136  137  137  137  137  137  138  138  139
  139  139  140  140  141  142  142  143  143  144  145  145  146  147  147  148
  149  149  150  151  152  152  153  153  154
    85.0-180.0 180.0   5.0 450.0                            LAT/LON1/LON2/DLON/H
  160  161  162  163  164  164  165  165  165  164  164  163  163  162  161  159
  158  157  155  153  151  149  147  145  143  141  139  138  136  134  133  132
  131  130  130  129  129  129  130  130  131  131  132  133  134  135  136  136
  137  138  139  139  140  140  141  142  142  143  144  145  146  146  148  149
  150  151  153  154  155  157  158  159  160
.
.
.
I have to search for a specific value by entering specific latitude, longitude and time.
 
I have a function using fopen and fgetl for searching this. The data have a fixed spacing. So, I use strcmp string comparison and isequal to search for the value I want. . . .
 
Let say, value = search(lat, lon, time)
lat = 85.0; lon = -175; time (UT) = 0;
I will first compare each line getting from fgetl with the string:
 
 
2014 6 29 0 0 0 EPOCH OF CURRENT MAP
 
If matched, then search for 85.0 from the from following line getting by fgetl
 
85.0-180.0 180.0 5.0 450.0 LAT/LON1/LON2/DLON/H
 
If matched, store all related data into a vector:
 
160 161 162 163 164 164 165 165 165 164 164 163 163 162 161 159 158 157 155 153 151 149 147 145 143 141 139 138 136 134 133 132 131 130 130 129 129 129 130 130 131 131 132 133 134 135 136 136 137 138 139 139 140 140 141 142 142 143 144 145 146 146 148 149 150 151 153 154 155 157 158 159 160 (in vector form)
then get the value by specific vector index (corresponding to longitude, index=2 in this example)
. . .
But I have to call this search function for 250,000 times. It will take over 24 hours!!!
 
How can I do? I cannot change my computer. Thank!! I need your help!!*
PS: the text file is about 12,000 row * 80 column

read text , fopen , fgetl , AI, Data Science, and Statistics , Text Analytics Toolbox , Text Dat

Expert Answer

Prashant Kumar answered . 2024-04-27 04:54:50

Now I'm done:
  • less than a tenth of a second to read and parse the sample file (with the file in the system cache)
  • less than a tenth of a millisecond to retrieve one value
  • the array ION is half a MB. Make ION uint8 to save memory - if needed.
  • 62196 values retrieved from the sample file.
You add tests and comments!
 
 
    >> tic,ION = cssm();toc
    Elapsed time is 0.074765 seconds.
    >> sum(not(isnan(ION(:))))
    ans =
           62196
    >> whos ION
      Name       Size                Bytes  Class     Attributes

      ION       73x71x12            497568  double            

    >> ION(lon2ix(0),lat2ix(85),ut2ix(20))
    ans =
       164  

    >> tic,ION(lon2ix(0),lat2ix(85),ut2ix(20));toc
    Elapsed time is 0.000067 seconds.

compared to

    >> tic, [gim_tec] = sample_search_function( 20, 85, 0 ), toc
    gim_tec =
       164
    Elapsed time is 0.265756 seconds.

where

    function    ION = cssm()
    str = fileread( 'c:\m\cssm\CODG1520.txt' );
    ca1 = regexp( str, '(?<=START OF TEC MAP).+?(?=END OF TEC MAP)', 'match' );
    ION = nan( 73, 70, 11 );
    lat2ix  = @(lat) round((lat+87.5)/2.5)+1;
    lon2ix  = @(lon) round((lon+180)/5.0)+1; %#ok
    ut2ix   = @(ut)  round(ut/2)+1;
    for jj = 1 : length( ca1 )

        buf = regexp( ca1{jj}, '\n', 'split', 'once' );
        buf = regexp( buf{2} , '\n', 'split', 'once' );
        ut  = textscan( buf{1}, '%*f%*f%*f%f%*[^\n]' );
        ut  = ut{1};
        ca2 = regexp( buf{2}, 'LAT/LON1/LON2/DLON/H', 'split' );
        pos = ca2{1};
        for kk = 2 : length( ca2 )
            lat = textscan( pos,'%f%*[^\n]' ); 
            lat = lat{1};
            num = sscanf( ca2{kk}(1:end-60), '%f' );
            pos =  strtrim( ca2{kk}(end-60+1:end) );
            ION(:,lat2ix(lat),ut2ix(ut)) = num;
        end
    end
    end

 


Not satisfied with the answer ?? ASK NOW

Frequently Asked Questions

MATLAB offers tools for real-time AI applications, including Simulink for modeling and simulation. It can be used for developing algorithms and control systems for autonomous vehicles, robots, and other real-time AI systems.

MATLAB Online™ provides access to MATLAB® from your web browser. With MATLAB Online, your files are stored on MATLAB Drive™ and are available wherever you go. MATLAB Drive Connector synchronizes your files between your computers and MATLAB Online, providing offline access and eliminating the need to manually upload or download files. You can also run your files from the convenience of your smartphone or tablet by connecting to MathWorks® Cloud through the MATLAB Mobile™ app.

Yes, MATLAB provides tools and frameworks for deep learning, including the Deep Learning Toolbox. You can use MATLAB for tasks like building and training neural networks, image classification, and natural language processing.

MATLAB and Python are both popular choices for AI development. MATLAB is known for its ease of use in mathematical computations and its extensive toolbox for AI and machine learning. Python, on the other hand, has a vast ecosystem of libraries like TensorFlow and PyTorch. The choice depends on your preferences and project requirements.

You can find support, discussion forums, and a community of MATLAB users on the MATLAB website, Matlansolutions forums, and other AI-related online communities. Remember that MATLAB's capabilities in AI and machine learning continue to evolve, so staying updated with the latest features and resources is essential for effective AI development using MATLAB.

Without any hesitation the answer to this question is NO. The service we offer is 100% legal, legitimate and won't make you a cheater. Read and discover exactly what an essay writing service is and how when used correctly, is a valuable teaching aid and no more akin to cheating than a tutor's 'model essay' or the many published essay guides available from your local book shop. You should use the work as a reference and should not hand over the exact copy of it.

Matlabsolutions.com provides guaranteed satisfaction with a commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been empanelled after extensive research and quality check.

Matlabsolutions.com provides undivided attention to each Matlab assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work done at the best price in industry.