plot seperate measurements in for loop on the same graph
Show older comments
I have several measurements saved in one folder. All measurement files have the same two colums (column A is time(s) and column B is volt). I used this script:
myDir = uigetdir; %gets directory
myFiles = dir(fullfile(myDir,'*.xlsx')); %gets all xlsx in struct
for i = 1:length(myFiles(:,1));
sig= xlsread(myFiles(i).name, 'B:B');
time= xlsread(myFiles(i).name, 'A:A');
plot(time,sig(i))
However, the sig returns as the values of column B of all measurements and does not plot anything but I only want Matlab to loop through every file and then plot the separate measurements in one figure using multiple graphs per measurement.
3 Comments
Jonathan Chin
on 9 Oct 2017
There are many ways of doing it see below for one method using hold on to add to the same figure
for i = 1:length(myFiles(:,1));
sig{i}= xlsread(myFiles(i).name, 'B:B');
time{i}= xlsread(myFiles(i).name, 'A:A');
end
figure% create new figure
ax=axes;
hold on
arrayfun(@(x) plot(ax,time{x},sig{x}),1:length(myFiles))
hold off
Debbie Oomen
on 10 Oct 2017
Jonathan Chin
on 11 Oct 2017
Edited: Jonathan Chin
on 11 Oct 2017
do you mean sub plots?
for i = 1:length(myFiles(:,1));
sig{i}= xlsread(myFiles(i).name, 'B:B');
time{i}= xlsread(myFiles(i).name, 'A:A');
subplot(length(myFiles(:,1)),1,i)
plot(time{i},sig{i})
end
subplot allows you to put multiple plots on the same figure.
Answers (1)
KSSV
on 10 Oct 2017
files = dir('*.xlsx'); % get all excel files
N = length(files) ; % total number of files
figure
hold on
for ii = 1:N
[num,txt,raw] = xlsread(files(i).name) ;
plot(num(:,1),num(:,2))
end
Categories
Find more on Graphics Performance in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!