"For colon operator with char operands, first and last operands must be char." error?

25 次查看(过去 30 天)
for n=1:1:4
MAT((a:(a+b)),n)=1;
end
a and b are integer numbers that change on each iteration of n
The code is meant to set some zeros in a zero matrix to 1
On the 2nd iteration, i.e. n=2, I keep getting the following error:
"For colon operator with char operands, first and last operands must be char."
  1 个评论
laurie
laurie 2015-2-25
编辑:laurie 2015-2-25
% OPTIONS.popsize=4;
% horizon = 6;
% num_gen = 4;
%Population(pop).chrom = structure 'Population' with a cell 'chrom'
% chrom = 1x4 matrix
%Data is also a struct
for pop=1:1:OPTIONS.popsize
Population(pop).chrom2 = zeros(horizon,num_gen);
for n=1:1:num_gen
a=Population(pop).chrom(1,n);
b=Data.tend(n)-Data.tstart(n)-1;
c=a:(a+b)
%Population(pop).chrom2((a:(a+b)),n)=1;
Population(pop).chrom2(c,n)=1;
end
end

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2015-2-25
According to the error message, a and b are integer numbers is not true. I suspect that a is actually of type char and b may be integer, which would result in a+b being integer.
Without knowing more about a and b, it's hard to help you, so post the code that generate them.
You can check the type of a and b when you get the error by writing
dbstop if error
at the comment prompt before running your loop / program. Matlab will break into the debugger when it encounters the error. At which point you can issue
whos a b
to see their type.
  4 个评论
Guillaume
Guillaume 2015-2-25
What is the output of
chrom = Population(pop).chrom
whos chrom
when the error occurs? Because that's the source of your problem. Somewhere, you've got a string.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by