MATLAB Answers

Is it possible to identify data in a for loop?

1 ビュー (過去 30 日間)
Feliciano Döring
Feliciano Döring 2020 年 8 月 1 日
コメント済み: Feliciano Döring 2020 年 8 月 2 日
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 件のコメント

サインインしてコメントする。

採用された回答

jonas
jonas 2020 年 8 月 1 日
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 件のコメント

表示 3 件の古いコメント
Feliciano Döring
Feliciano Döring 2020 年 8 月 2 日
By the way, is there a way to not display the '.txt' extension on the displayname?
jonas
jonas 2020 年 8 月 2 日
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));
Feliciano Döring
Feliciano Döring 2020 年 8 月 2 日
Thanks!

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品


リリース

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by