我有一个函数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.
我的代码出了什么问题?
答案 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