【问题标题】:Multiple file loading matlab [closed]多个文件加载matlab [关闭]
【发布时间】:2016-05-06 21:06:55
【问题描述】:

我想在几个文件夹中加载多个文件并为每个文件绘制图形。我对matlab环境很幼稚,我做了这样的肮脏事情!:

foldername1='K_S/';
foldername2='L_J/';
foldername3='P_O/';

extension='*.pro';

name1=strcat(foldername1, extension);
name2=strcat(foldername2, extension);
name3=strcat(foldername3, extension);

fileset1=dir(name1);
fileset2=dir(name2);
fileset3=dir(name3);

a = [];
b = [];
c = [];

for i = 1:length(fileset1)

    a=load(strcat(foldername1, fileset1(i).name)); 
    b=load(strcat(foldername2, fileset2(i).name)); 
    c=load(strcat(foldername3, fileset3(i).name)); 


    figure
    sub1=plot(a(:,1),a(:,2),'b'), hold on
    sub2=plot(a(:,1),a(:,3),'r')
    ylabel('score')
    xlabel('trial')
    legend([sub1, sub2],'sub1','sub2')
    legend boxoff
    title(sprintf('Dyad K S: %d',i));
    axis square

    figure
    sub1=plot(b(:,1),b(:,2),'b'), hold on
    sub2=plot(b(:,1),b(:,3),'r')
    ylabel('score')
    xlabel('trial')
    legend([sub1, sub2],'sub1','sub2')
    legend boxoff
    title(sprintf('Dyad L J: %d',i));
    axis square

    figure
    sub1=plot(c(:,1),c(:,2),'b'), hold on
    sub2=plot(c(:,1),c(:,3),'r')
    ylabel('score')
    xlabel('trial')
    legend([sub1, sub2],'sub1','sub2')
    legend boxoff
    title(sprintf('Dyad P O: %d',i));
    axis square

end

任何关于如何使其更智能的帮助将不胜感激。

谢谢!

【问题讨论】:

  • 使用fullfile 命令而不是strcat 作为文件路径和名称。

标签: matlab multiple-file-upload


【解决方案1】:

您应该在 matlab 中使用cells,它允许将多个对象存储到一个变量中。 类似的东西

foldername ={'K_S/', 'L_J/', 'P_O/'};

extension='*.pro';

for k = 1:length(foldername)

    name=strcat(foldername{k}, extension);

    fileset=dir(name);

    a = [];                               

    for i = 1:length(fileset)

        a=load(strcat(foldername{k}, fileset(i).name)); 


        figure
        sub1=plot(a(:,1),a(:,2),'b'), hold on
        sub2=plot(a(:,1),a(:,3),'r')
        ylabel('score')
        xlabel('trial')
        legend([sub1, sub2],'sub1','sub2')
        legend boxoff
        title(sprintf(['Dyad' strrep(foldername{k}, '_', ' ') ': %d'],i));
        axis square


    end
end

【讨论】:

  • 非常感谢@DomDev 的建议。在这里我想知道名称:'name=strcat(foldername{k}, extension);'必须是一个单元格,对吧?
  • 不,不一定。因为它处于循环中,所以它会为每个文件夹名称覆盖自己。但是,如果您想保存变量“名称”以供以后使用,那么它应该是一个单元格。
  • 如果对您有帮助,请点赞该问题并将其标记为答案 :)
  • 我只是整理了代码,以便正确更新标题
  • 感谢@DomDev,但我无法投票,因为我是论坛的新手并且没有太多声誉!
猜你喜欢
  • 1970-01-01
  • 2012-01-02
  • 2011-09-26
  • 2015-04-22
  • 2017-02-07
  • 2013-10-02
  • 1970-01-01
  • 2021-06-09
  • 2019-09-07
相关资源
最近更新 更多