After importing multiple multicolumn txt files using "dlmread" function. Now i have 10 txt files each contains 12 columns, How can i go through all those 10 txt files and plot graphs for all subsequent 2 columns iteratively..

for k = 1:length(theFiles) baseFileName = theFiles(k).name; fullFileName = fullfile(myFolder, baseFileName); fprintf(baseFileName,'%2d\n', k); %fullFileName = dlmread(fullFileName,'',1,0) READ=dlmread(fullFileName,'',1,0) end

2 Comments

Your goal is clear, the code is helpful, but you never stated the problem you're facing.
I loaded all the txt files but can not be able to plot them. any suggestion please? I am a novis in this field.

Sign in to comment.

 Accepted Answer

myFolder = '/home/ali/IDT';
% Get a list of all files in the folder with the desired file name pattern.
theFiles = dir(fullfile(myFolder, '*.txt'));
for k = 1:length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(baseFileName,'%2d\n', k);
%fullFileName = dlmread(fullFileName,'',1,0)
READ=dlmread(fullFileName,'',1,0)
for j=1:6
figure %replace with "hold on" if you want them all on the same graph
plot(READ(:,2*(j-1)+1),READ(:,2*(j-1)+2))
end
end

1 Comment

Great! Actually i wanted the subplot function to have all the graph together in one one file. Other then that accept my apology if i am too silly, can you please explain the plot command that you used? Thanks again

Sign in to comment.

More Answers (1)

(continuing from comments under the question).
There are some problems to fix in the current code before we move on to the question at hand.
First, you are reading in data from your 10 txt files but you are not saving the data. Instead, you are overwriting the data at each iteration of your for-loop. If (and only if) all of your data have the same number of columns, you can combine the data from all 10 files like this.
allData = [];
for k = 1:length(theFiles)
...
...
READ = dlmread(fullFileName,'',1,0);
allData(end+1:end+size(READ,1), :) = READ;
end
Second, your fprintf() command isn't correct. You probably want something like this:
fprintf('%s (%d)\n',baseFileName, k);
Once you've read in all your data and stored it in 'allData', you can plot columns like this
plot(allData(:,2)) %Plotting column 2
If you'd like to plot data from each file individually, put the plotting function within the for-loop. That would look something like this.
for k = 1:length(theFiles)
...
...
READ = dlmread(fullFileName,'',1,0);
plot(READ(:,2)); %plotting column 2
end

7 Comments

Thank you very much for your reply. That is very helpful. But the thing is if one file contains 12 column, i want to plot (column 1 and column 2) then (column 3 and column 4) then (column 6 and column 7) and on..... And this will be done for all 10 txt file and plot them in a single file. Again thanks for your help.
You could do that within a loop.
for k = 1:length(theFiles)
...
...
READ = dlmread(fullFileName,'',1,0);
figure();
c = 0;
for j = 1: 2 : size(READ,2)
c = c+1;
subplot(ceil(size(READ,2)/2), 1, c)
plot(READ(:,j))
hold on
plot(READ(:,j+1))
end
end
it is producing this types of graph. in the command window there is an error message: error: A(I,J): column index out of bounds; value 28 out of bound 27
"...and plot them in a single file". I interpreted that to mean you want all of the subplots on 1 figure (which, as you can see, is really crowded). You could space the subplots differently (see "help subplot") or you could spread them out onto different figures.
I don't have your data so I don't know what is causing the error. I believe my code assumes you have an even number of columns.
Thank you so much Adam Danz. It was my fault, now it is working. I updated my code from your suggestion. It was a real help. Thanks again.
I added some code to store all the plots in a specific folder. But it returns an error like (error: 'export_fig' undefined near line 22 column 10)
l=0
l=l+1;
initialFigure = sprintf('figure_%d.jpg',l);
% Specify some particular, specific folder:
fullFigure = fullfile('/home/ali/ign_figures', initialFigure);
figure(l);
addpath(pwd)
export_fig(fullFigure);
end

Sign in to comment.

Categories

Asked:

on 22 Aug 2018

Edited:

on 12 Sep 2018

Community Treasure Hunt

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

Start Hunting!