2016-08-31 2 views
0

У меня есть набор функций, которые я хочу применить к каждому из них в отдельной итерации. Я отмечаю функции как: Strategy1 (x), Strategy2 (x) .... Strategy100 (x). Как вы можете видеть, в имени функции есть числовая переменная. Я хочу достичь чего-то вроде, вызывающий функцию matlab, имя которой содержит числовую переменную

LS = [Strategy1(x),Strategy2(x),...,Strategy100(x)]; 
Y = zeros(100,1); 
for i = 1:1:100 
    Y(i) = Strategyi(x); 
end 

Интересно, есть ли способ достичь этой цели в Matlab?

+6

Я очень сомневаюсь, дизайн вашего сценария. Почему вам нужно 100 функций? Что в них такого разного? – Bernhard

+0

На самом деле это около 15 функций для каждого игрока, и у меня есть 2 игрока. Я хочу зверски усилить все 15^2 комбинаций стратегий. Поэтому в итоге мне придется писать 2 для циклов. И каждая из этих 15 стратегий очень различна. – ftxx

+3

Это не способ сделать это. Обычно вы определяете функцию, которая обрабатывает стратегии. Функция нумерации с 1 по 15 полностью скрывает то, что выполняет каждая функция. В какой-то момент это выстрелит в ногу. – Bernhard

ответ

0

Вы можете создать функцию ручки с помощью str2func

n = 100; 
Y = zeros(n,1); 
for i = 1:n 
    funcH = str2func(sprintf('Strategy%d', i)); 
    Y(i) = funcH(x); 
end 

Если вы хотите, чтобы объединить имена функций вне для цикла можно использовать srtcat

strcat('Strategy', strread(num2str(1:n), '%s')) 
Смежные вопросы