что делает этот код Matlab? - PullRequest
0 голосов
/ 24 февраля 2012

Я довольно новичок в Matlab и написал следующий код:

datadir=('/.../prod/balanceSheet/DB/');

seriesnames = {'a.m','b.m','c.m','d.m','f.m','g.m','h.m','i.m'};

for proj=1:5;
database='';
switch proj
  case 1
    database=strcat(datadir,'scenario1');
  case 2
    database=strcat(datadir,'scenario2');
  case 3
    database=strcat(datadir,'scenario3');
  case 4
    database=strcat(datadir,'scenario4');
  case 5
    database=strcat(datadir,'scenario5');
end;

database;
gooddatanames={};
a=length(seriesnames);
for i=1:a
    gooddatanames={gooddatanames,database,seriesnames(i)};
end
end

Я впервые использую переключатель. в основном я пытаюсь взять ряды из баз данных (1,2,3, ...) так, чтобы все серии соответствовали всем сценариям. Мне не хватает функции, которая извлекает данные, но выполняет ли приведенный выше код нужную функцию?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Изменение:

gooddatanames={gooddatanames,database,seriesnames(i)};

до

gooddatanames={gooddatanames{:},database,seriesnames{i}};

и переместите gooddatanames = {} за пределы цикла, а затем он выполняет то, что, как я думаю, вы ожидаете, - это создание массива ячеек 1x80 с чередующимися папками и именами файлов.


Скорее всего, внесите еще несколько изменений, например:

datadir=('/.../prod/balanceSheet/DB/');

seriesnames = {'a.m','b.m','c.m','d.m','f.m','g.m','h.m','i.m'};
gooddatanames={};

for proj=1:5;
    database='';
    switch proj
        case 1
            database=fullfile(datadir,'scenario1');
        case 2
            database=fullfile(datadir,'scenario2');
        case 3
            database=fullfile(datadir,'scenario3');
        case 4
            database=fullfile(datadir,'scenario4');
        case 5
            database=fullfile(datadir,'scenario5');
    end;

    for i=1:length(seriesnames);
        gooddatanames{end+1} = fullfile(database,seriesnames{i});
    end
end

, что приводит к массиву 1x40 полных путей к отдельным файлам.

0 голосов
/ 24 февраля 2012

Я согласен с тем, что написал Pursuit, хотя я хотел бы добавить, что ваша структура for / switch немного глупа. Если вам фактически нужно перечислить все из них, как вы это делаете с «переключателем», как вы его реализовали, то нет никаких причин не полностью исключать циклы for / switch и просто оставить себя с командами. Одной из возможных альтернатив будет замена всего ненужного «переключателя» на:

database = fullfile(datadir, ['scenario', num2str(proj)]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...