Is it possible to identify data in a for loop?
1 回表示 (過去 30 日間)
古いコメントを表示
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
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 件のコメント
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));
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!