MATLAB Answers

Is it possible to identify data in a for loop?

1 view (last 30 days)
I have a code in which I pull files from '.txt' files and run them in a for loop in order to plot them all together. I was wondering if there was a way for me to identify each line separately in the plot. Here is the code and an example file,
myFolder = 'C:\Users\administrador\Desktop\Curves';
d=dir(fullfile(myFolder, '*.txt'))
figure, hold on
for k = 1:numel(d)
data=dlmread(fullfile(myFolder,d(k).name));
plot(data(:,4),data(:,5),'LineWidth',3);
xlim([0 7])
ylim([0 4])
end

  0 Comments

Sign in to comment.

Accepted Answer

jonas
jonas on 1 Aug 2020
I would probably collect the data in the loop instead and then call plot outside of the loop. Could use something like this:
d=dir(fullfile(myFolder, '*.txt'))
for k = 1:numel(d)
data=dlmread(fullfile(myFolder,d(k).name));
x{k} = data(:,4);
y{k} = data(:,5);
end
figure;hold on
h = cellfun(@plot,x,y,'uniformoutput',1);
xlim([0 7])
ylim([0 4])
legend(h,{d.name})
If you really want to label the data inside the loop then you can set the displayname:
d=dir(fullfile(myFolder, '*.txt'))
figure, hold on
for k = 1:numel(d)
data=dlmread(fullfile(myFolder,d(k).name));
h(k) = plot(data(:,4),data(:,5),'LineWidth',3,'displayname',d(k).name);
xlim([0 7])
ylim([0 4])
end
legend

  6 Comments

Show 3 older comments
Feliciano Döring
Feliciano Döring on 2 Aug 2020
By the way, is there a way to not display the '.txt' extension on the displayname?
jonas
jonas on 2 Aug 2020
Not sure why the first method did not work then, perhaps a release issue.
Sure, just do not pass the 4 last characters
h(k) = plot(data(:,4),data(:,5),'LineWidth',3,'displayname',d(k).name(1:end-4));

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by