Matlab Read Text File Line by Line With Delimiter
MATLAB - Information Import
Importing data in MATLAB means loading data from an external file. The importdata function allows loading various data files of unlike formats. It has the following five forms −
Sr.No. | Function & Description |
---|---|
ane | A = importdata(filename) Loads data into array A from the file denoted by filename. |
2 | A = importdata('-pastespecial') Loads information from the system clipboard rather than from a file. |
3 | A = importdata(___, delimiterIn) Interprets delimiterIn equally the column separator in ASCII file, filename, or the clipboard data. You can use delimiterIn with any of the input arguments in the higher up syntaxes. |
4 | A = importdata(___, delimiterIn, headerlinesIn) Loads data from ASCII file, filename, or the clipboard, reading numeric information starting from line headerlinesIn+one. |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) Returns the detected delimiter grapheme for the input ASCII file in delimiterOut and the detected number of header lines in headerlinesOut, using whatever of the input arguments in the previous syntaxes. |
By default, Octave does not have support for importdata() function, so y'all volition have to search and install this package to make following examples piece of work with your Octave installation.
Example 1
Let us load and brandish an epitome file. Create a script file and type the following code in information technology −
filename = 'grin.jpg'; A = importdata(filename); paradigm(A);
When you lot run the file, MATLAB displays the epitome file. However, you must store it in the electric current directory.
Example 2
In this example, nosotros import a text file and specify Delimiter and Cavalcade Header. Allow the states create a space-delimited ASCII file with column headers, named weeklydata.txt.
Our text file weeklydata.txt looks like this −
SunDay Mon TuesDay WednesDay ThursDay FriDay Sat 95.01 76.21 61.54 40.57 55.79 lxx.28 81.53 73.xi 45.65 79.19 93.55 75.29 69.87 74.68 60.68 41.85 92.eighteen 91.69 81.32 90.38 74.51 48.threescore 82.14 73.82 41.03 0.99 67.22 93.18 89.13 44.47 57.63 89.36 thirteen.89 xix.88 46.lx
Create a script file and type the following code in it −
filename = 'weeklydata.txt'; delimiterIn = ' '; headerlinesIn = one; A = importdata(filename,delimiterIn,headerlinesIn); % View data for k = [1:7] disp(A.colheaders{ane, k}) disp(A.data(:, k)) disp(' ') end
When y'all run the file, information technology displays the following effect −
Sun 95.0100 73.1100 threescore.6800 48.6000 89.1300 MonDay 76.2100 45.6500 41.8500 82.1400 44.4700 TuesDay 61.5400 79.1900 92.1800 73.8200 57.6300 Wednesday 40.5700 93.5500 91.6900 41.0300 89.3600 Thursday 55.7900 75.2900 81.3200 0.9900 xiii.8900 Fri seventy.2800 69.8700 90.3800 67.2200 19.8800 SaturDay 81.5300 74.6800 74.5100 93.1800 46.6000
Case 3
In this example, permit us import information from clipboard.
Copy the following lines to the clipboard −
Mathematics is elementary
Create a script file and blazon the following code −
A = importdata('-pastespecial')
When yous run the file, it displays the following result −
A = 'Mathematics is simple'
Low-Level File I/O
The importdata function is a high-level part. The depression-level file I/O functions in MATLAB allow the most control over reading or writing information to a file. Yet, these functions need more detailed information about your file to work efficiently.
MATLAB provides the following functions for read and write operations at the byte or character level −
Function | Description |
---|---|
fclose | Shut 1 or all open up files |
feof | Test for end-of-file |
ferror | Information about file I/O errors |
fgetl | Read line from file, removing newline characters |
fgets | Read line from file, keeping newline characters |
fopen | Open up file, or obtain data about open files |
fprintf | Write information to text file |
fread | Read information from binary file |
frewind | Motility file position indicator to beginning of open file |
fscanf | Read data from text file |
fseek | Move to specified position in file |
ftell | Position in open file |
fwrite | Write data to binary file |
Import Text Data Files with Low-Level I/O
MATLAB provides the following functions for low-level import of text data files −
-
The fscanf function reads formatted information in a text or ASCII file.
-
The fgetl and fgets functions read one line of a file at a fourth dimension, where a newline character separates each line.
-
The fread function reads a stream of information at the byte or bit level.
Example
We have a text information file 'myfile.txt' saved in our working directory. The file stores rainfall information for 3 months; June, July and August for the year 2012.
The data in myfile.txt contains repeated sets of time, month and rainfall measurements at v places. The header data stores the number of months M; so we have Grand sets of measurements.
The file looks like this −
Rainfall Data Months: June, July, August M = 3 12:00:00 June-2012 17.21 28.52 39.78 sixteen.55 23.67 19.xv 0.35 17.57 NaN 12.01 17.92 28.49 17.forty 17.06 11.09 9.59 ix.33 NaN 0.31 0.23 x.46 thirteen.17 NaN 14.89 19.33 20.97 19.l 17.65 fourteen.45 fourteen.00 18.23 10.34 17.95 16.46 nineteen.34 09:10:02 July-2012 12.76 16.94 fourteen.38 eleven.86 16.89 20.46 23.17 NaN 24.89 nineteen.33 xxx.97 49.50 47.65 24.45 34.00 18.23 xxx.34 27.95 16.46 19.34 xxx.46 33.17 NaN 34.89 29.33 thirty.97 49.50 47.65 24.45 34.00 28.67 30.34 27.95 36.46 29.34 xv:03:forty August-2012 17.09 16.55 19.59 17.25 nineteen.22 17.54 11.45 13.48 22.55 24.01 NaN 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67 17.54 eleven.45 13.48 22.55 24.01 NaN 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67
Nosotros will import data from this file and display this data. Take the following steps −
-
Open the file with fopen office and get the file identifier.
-
Describe the data in the file with format specifiers, such as '%s' for a string, '%d' for an integer, or '%f' for a floating-point number.
-
To skip literal characters in the file, include them in the format description. To skip a data field, use an asterisk ('*') in the specifier.
For example, to read the headers and return the single value for M, we write −
Yard = fscanf(fid, '%*s %*southward\n%*due south %*s %*s %*southward\nM=%d\n\n', one);
-
By default, fscanf reads data according to our format clarification until information technology does not observe any match for the data, or information technology reaches the end of the file. Here we will apply for loop for reading 3 sets of data and each time, it will read seven rows and 5 columns.
-
We will create a structure named mydata in the workspace to store information read from the file. This structure has three fields - fourth dimension, calendar month, and raindata array.
Create a script file and type the following code in it −
filename = '/data/myfile.txt'; rows = 7; cols = 5; % open the file fid = fopen(filename); % read the file headers, find Thou (number of months) M = fscanf(fid, '%*due south %*s\n%*s %*due south %*due south %*due south\nM=%d\n\n', 1); % read each set of measurements for n = one:M mydata(n).time = fscanf(fid, '%s', 1); mydata(n).month = fscanf(fid, '%due south', 1); % fscanf fills the array in column social club, % then transpose the results mydata(n).raindata = ... fscanf(fid, '%f', [rows, cols]); end for n = 1:One thousand disp(mydata(due north).fourth dimension), disp(mydata(n).month) disp(mydata(northward).raindata) end % close the file fclose(fid);
When you lot run the file, information technology displays the post-obit result −
12:00:00 June-2012 17.2100 17.5700 11.0900 xiii.1700 14.4500 28.5200 NaN nine.5900 NaN fourteen.0000 39.7800 12.0100 9.3300 14.8900 18.2300 16.5500 17.9200 NaN xix.3300 10.3400 23.6700 28.4900 0.3100 20.9700 17.9500 19.1500 17.4000 0.2300 19.5000 16.4600 0.3500 17.0600 ten.4600 17.6500 19.3400 09:10:02 July-2012 12.7600 NaN 34.0000 33.1700 24.4500 16.9400 24.8900 18.2300 NaN 34.0000 14.3800 nineteen.3300 xxx.3400 34.8900 28.6700 11.8600 thirty.9700 27.9500 29.3300 xxx.3400 16.8900 49.5000 xvi.4600 30.9700 27.9500 twenty.4600 47.6500 19.3400 49.5000 36.4600 23.1700 24.4500 30.4600 47.6500 29.3400 15:03:twoscore August-2012 17.0900 xiii.4800 27.2100 11.4500 25.0500 16.5500 22.5500 26.7900 13.4800 27.2100 19.5900 24.0100 24.9800 22.5500 26.7900 17.2500 NaN 12.2300 24.0100 24.9800 19.2200 21.1900 16.9900 NaN 12.2300 17.5400 25.8500 18.6700 21.1900 16.9900 11.4500 25.0500 17.5400 25.8500 xviii.6700
Useful Video Courses
Video
Video
Video
Video
Video
Video
Source: https://www.tutorialspoint.com/matlab/matlab_data_import.htm
0 Response to "Matlab Read Text File Line by Line With Delimiter"
Post a Comment