【问题标题】:Unable to assign function results to array indices无法将函数结果分配给数组索引
【发布时间】:2015-02-17 00:19:01
【问题描述】:

我有一个名为simulate_ant() 的函数,它返回模拟蚂蚁在 32x32 网格上的适应度值,它以网格的文本文件和由 30 位数字组成的字符串作为参数,这些数字组成了一个有限状态机, 10 个状态,每个状态用 3 位数字表示。

我创建了一个由 30 位字符串组成的数组,我想迭代这 10 次并用函数的结果填充一个单独的数组,为此我编写了以下代码:

% our first generation of ants
first_gen = ['110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100'];
first_gen_fitness = [0,0,0,0,0,0,0,0,0,0];

% get fitnesses of first generation of ants
for i = 1:10

    first_gen_fitness(i) = simulate_ant('muir_world.txt', first_gen(i));

end

我期望 first_gen_fitness 填充 10 个 47,如下所示:first_gen_fitness = [47, 47, 47, 47, 47, 47, 47, 47, 47, 47]; 但它只是出现 10 个 0。

谁能告诉我哪里出错了?

【问题讨论】:

  • simulate_ant('muir_world.txt', first_gen(1)) 返回什么?手动运行代码,一次一步(不使用 for 循环)找出问题所在。
  • 如果我运行simulate_ant('muir_world.txt', 1);,它会返回相同的错误,这实际上告诉我我没有输入正确的第二个参数。但是,如果我运行 simulate_ant('muir_world.txt', '110202132224154246176368198100');,我会得到 47 的正确答案,但这两者不代表完全相同吗?

标签: arrays matlab indexing


【解决方案1】:

原因是:

first_gen(1) == '1',不是'110202132224154246176368198100'

例如,您可以这样做:

first_gen(i,:)

获取整个第一行。所以总的来说:

% our first generation of ants
first_gen = ['110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100';'110202132224154246176368198100'];
first_gen_fitness = zeros(10,1)

% get fitnesses of first generation of ants
for ii = 1:10
    first_gen_fitness(ii) = simulate_ant('muir_world.txt', first_gen(i,:));
end

【讨论】:

  • 这很好用,谢谢。我会尽快接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 2014-06-04
  • 2010-10-02
  • 2020-10-05
  • 2019-01-04
相关资源
最近更新 更多