这个MATLAB函数有什么问题?

时间:2013-07-17 14:14:04

标签: matlab

我有一个函数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.

我的代码出了什么问题?

1 个答案:

答案 0 :(得分: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