1

我有一个功能,fitness.m. 函数定义如下:

function A = fitness(par)
    n = size(par,1)
    l = size(par,2)
    fitness_val = zeros(1,n);
    for i=1:n
        for j=1:l
            fitness_val(i) = fitness_val(i) + str2num(par(i,j));
        end
    end
    A = fitness_val

我现在正在执行这段代码:

%par is a char array
par =

1110001101
0110010001
1100010100
0110010111
1100111100
1100000101

fitness(par)

我的输出应该是

A =

 6     4     4     6     6     4

相反,它会抛出一个奇怪的错误,如下所示:

>> fitness(par)
Index exceeds matrix dimensions.

我的代码有什么问题?

4

1 回答 1

1

只需执行以下操作,您就不必担心索引超出矩阵维度。

par 是一个单元格

for i = 1:numel(par) 
    fitness_val(i) = sum(par{i}=='1');
end

这确实假设 par 是一个包含字符串的单元格,但这不应该是一个遥远的延伸

function格式

function fitVal = fitness(par);
    fitVal = zeros(1,numel(par));
    for i = 1:numel(par)
        fitVal(i) = sum(par{i}=='1');
    end
end

par 是一个矩阵

function fitVal = fitness(par)
    fitVal = sum(par == '1',2).';
end
于 2013-07-17T14:34:58.403 回答