Read Next Line of Text File Matlab
Loading Data into MATLAB for Plotting
In addition to plotting values created with its own commands, MATLAB is very useful for plotting data from other sources, e.g., experimental measurements. Typically this data is available as a plain text file organized into columns. MATLAB tin hands handle tab or space-delimited text, but it cannot directly import files stored in the native (binary) format of other applications such equally spreadsheets.
The simplest way to import your data into MATLAB is with the load control. Unfortunately, the load command requires that your data file contain no text headings or column labels. To get around this restriction you must use more advanced file I/O commands. Below I demonstrate both approaches with examples. I've included an 1000-file to handle the more complex case of a file with an arbitrary number of lines of text header, in addition to text labels for each column of data. Though hardly a catholicon, this function is much more than flexible than the load command because information technology allows you lot to provide documentation inside your data file.
Hither'south an outline of this section
- The MATLAB
loadControl - A uncomplicated plot of data from a file
- Plotting data from files with column headings
The MATLAB load Control
There is more ane way to read data into MATLAB from a file. The simplest, though least flexible, procedure is to utilize the load command to read the entire contents of the file in a unmarried stride. The load command requires that the data in the file exist organized into a rectangular array. No column titles are permitted. One useful class of the load control is
load name.ext
where ``proper noun.ext'' is the name of the file containing the data. The outcome of this performance is that the data in ``proper noun.ext'' is stored in the MATLAB matrix variable chosen name. The ``ext'' string is any three character extension, typically ``dat''. Whatever extension except ``mat'' indicates to MATLAB that the data is stored as plain ASCII text. A ``mat'' extension is reserved for MATLAB matrix files (run across ``assistance load'' for more than information).
Suppose y'all had a simple ASCII file named my_xy.dat that contained two columns of numbers. The following MATLAB statements will load this data into the matrix ``my_xy'', and then copy it into 2 vectors, x and y.
>> load my_xy.dat; % read data into the my_xy matrix >> 10 = my_xy(:,ane); % copy first column of my_xy into ten >> y = my_xy(:,2); % and 2d column into y
You don't need to copy the data into x and y, of course. Whenever the ``x'' data is needed you could refer to information technology every bit my_xy(:,1). Copying the data into ``ten'' and ``y'' makes the code easier to read, and is more than aesthetically highly-seasoned. The duplication of the data will not tax MATLAB's retentiveness for nearly modest information sets.
The load control is demonstrated in the following example.
If the data you wish to load into MATLAB has heading information, e.g., text labels for the columns, you have the post-obit options to deal with the heading text.
- Delete the heading information with a text editor and use the
loadcommand :-( - Use the
fgetlcontrol to read the heading information one line at at fourth dimension. You tin can then parse the column labels with thestrtokcontrol. This technique requires MATLAB version four.2c or afterward. - Use the
fscanfcommand to read the heading information.
Of these options, using fgetl and strtok is probably the nearly robust and convenient. If yous read the heading text into MATLAB, i.e., if y'all don't apply the load command, then you lot will accept to also read the plot data with fscanf. The example, Plotting data from files with column headings shows how this is washed.
A elementary plot of data from a file
This example show you how to load a simple data ready and plot it.
The PDXprecip.dat file contains two columns of numbers. The first is the number of the month, and the 2d is the mean precipitation recorded at the Portland International Airport between 1961 and 1990. (For an abundance of atmospheric condition information like this check out the Oregon Climate Service)
Here are the MATLAB commands to create a symbol plot with the data from PDXprecip.dat. These commands are also in the script file precipPlot.m for yous to download.
>> load PDXprecip.dat; % read data into PDXprecip matrix >> month = PDXprecip(:,1); % re-create starting time column of PDXprecip into month >> precip = PDXprecip(:,ii); % and second cavalcade into precip >> plot(month,precip,'o'); % plot precip vs. month with circles >> xlabel('calendar month of the year'); % add axis labels and plot championship >> ylabel('mean precipitation (inches)'); >> championship('Mean monthly atmospheric precipitation at Portland International Airport'); Although the data in the month vector is trivial, it is used here anyway for the purpose of exposition. The preceding statments create the following plot.
Plotting data from files with cavalcade headings
If all your data is stored in files that contain no text labels, the load command is all you need. I like labels, however, because they allow me to certificate and forget about the contents of a file. To apply the load for such a file I would take to delete the carefully written comments everytime I wanted to make a plot. So, in club to minimize my effort, I might stop adding the comments to the data file in the first identify. For u.s. command freaks, that leads to an unacceptable increment in entropy of the universe! The solution is to find a style to take MATLAB read and deal with the text comments at the top of the file.
The following example presents a MATLAB office that can read columns of data from a file when the file has an arbitrary length text header and text headings for each columns.
The data in the file PDXtemperature.dat is reproduced below
Monthly averaged temperature (1961-1990) Portland International Aerodrome Source: Dr. George Taylor, Oregon Climate Service, http://world wide web.ocs.oregonstate.edu/ Temperatures are in degrees Farenheit Month High Low Average one 45.36 33.84 39.6 two 50.87 35.98 43.43 iii 56.05 38.55 47.iii 4 60.49 41.36 50.92 5 67.17 46.92 57.05 half dozen 73.82 52.viii 63.31 7 79.72 56.43 68.07 viii 80.14 56.79 68.47 9 74.54 51.83 63.18 10 64.08 44.95 54.52 11 52.66 39.54 46.1 12 45.59 34.75 40.17
The file has a five line header (including blank lines) and each column of numbers has a text label. To use this data with the load command you would have to delete the text labels and save the file. A meliorate solution is to have MATLAB read the file without destroying the labels. Better even so, we should be able to tell MATLAB to read and use the column headings when it creates the plot legend.
At that place is no built-in MATLAB command to read this data, so nosotros have to write an m-file to do the job. One solution is the file readColData.yard. The full text of that function won't exist reproduced here. You can click on the link to examine the code and salve it on your estimator if you like.
Here is the prologue to readColData.m
function [labels,x,y] = readColData(fname,ncols,nhead,nlrows) % readColData reads data from a file containing information in columns % that have text titles, and possibly other header text % % Synopsis: % [labels,ten,y] = readColData(fname) % [labels,x,y] = readColData(fname,ncols) % [labels,x,y] = readColData(fname,ncols,nhead) % [labels,x,y] = readColData(fname,ncols,nhead,nlrows) % % Input: % fname = name of the file containing the data (required) % ncols = number of columns in the data file. Default = ii. A value % of ncols is required only if nlrows is also specified. % nhead = number of lines of header information at the very top of % the file. Header text is read and discarded. Default = 0. % A value of nhead is required merely if nlrows is also specified. % nlrows = number of rows of labels. Default = 1 % % Output: % labels = matrix of labels. Each row of lables is a different % label from the columns of data. The number of columns % in the labels matrix equals the length of the longest % cavalcade heading in the data file. More than than one row of % labels is allowed. In this case the second row of column % headings begins in row ncol+1 of labels. The 3rd row % cavalcade headings begins in row 2*ncol+1 of labels, etc. % % Notation: Private column headings must not incorporate blanks % % ten = column vector of x values % y = matrix of y values. y has length(10) rows and ncols columns
The first line of the file is the office definition. Following that are several lines of comment statements that form a prologue to the role. Because the starting time line subsequently the role definition has a not-blank comment argument, typing ``help readColData'' at the MATLAB prompt will cause MATLAB to print the prologue in the command window. This is how the on-line help to all MATLAB functions is provided.
The prologue is organized into four sections. First is a brief statement of what the part does. Next is a synopsis of the ways in which the function can exist called. Following that the input and output parameters are described.
Here are the MATLAB commands that use readColData.thou to plot the information in PDXtemperature.dat. The commands are also in the script file multicolPlot.one thousand
>> % read labels and x-y data >> [labels,calendar month,t] = readColData('PDXtemperature.dat',iv,5); >> plot(month,t(:,1),'ro',month,t(:,ii),'c+',month,t(:,3),'yard-'); >> xlabel(labels(1,:)); % add together axis labels and plot title >> ylabel('temperature (degrees F)'); >> title('Monthly average temperature for Portland International Airdrome'); >> % add a plot fable using labels read from the file >> fable(labels(two,:),labels(3,:),labels(iv,:)); These statments create the post-obit plot.
[Preceding Section] [Master Outline] [Section Outline] [Next Section]
Source: https://web.cecs.pdx.edu/~gerry/MATLAB/plotting/loadingPlotData.html
0 Response to "Read Next Line of Text File Matlab"
Post a Comment