Index exceeds array bounds.

1 visualización (últimos 30 días)
Bushra Mumtaz
Bushra Mumtaz el 3 de Mayo de 2019
Comentada: Roy Kadesh el 3 de Mayo de 2019
Kindly help ... i m new in matlab ..can't understand the error
Error in clone_mut_selection (line 12)
g = (randn./beta) .* exp(-fitin(i));
function [C] = clone_mut_selection(Ab,Nc,beta,fitin,xmin,xmax,ymin,ymax,f)
% C -> matrix of clones
% g -> vector with Gaussian mutation
% Ab -> matrix of antibodies
% N -> cardinality of Ab
% Nc -> number of clones for each candidate
[N,L] = size(Ab);
C = [];
for i=1:N
vones = ones(N,1);
Cc = vones * Ab(i,:);
% g = (randn(Nc,L)./beta) .* exp(-beta.*fitin(i));
g = (randn(N,L)./beta) .* exp(-fitin(i));
g(1,:) = zeros(1,L); % Keep one previous individual for each clone unmutated
c = Cc + g;
% Keeps all elements of the population within the allowed bounds
Ixmin = find(c(:,1) < xmin); Ixmax = find(c(:,1) > xmax);
%Iymin = find(c(:,2) < ymin); Iymax = find(c(:,2) > ymax);
if ~isempty(Ixmin)
c(Ixmin,1) = Cc(length(Ixmin),1);
end
if ~isempty(Ixmax)
c(Ixmax,1) = Cc(length(Ixmax),1);
end
% if ~isempty(Iymin)
% c(Iymin,2) = Cc(length(Iymin),2);
% end
% if ~isempty(Iymax)
% c(Iymax,2) = Cc(length(Iymax),2);
% end
x = c(:,1); y = c(:,2);
% fit = eval(f);
fit = (fitnessfunction(Ab,N));
[out,I] = max(fit);
C = [C;c(I,:)]; % C contains only the best individuals of each clone
end
  3 comentarios
Rik
Rik el 3 de Mayo de 2019
This time I edited your question for you. Next time, please use the tools explained on this page to make your question more readable.
Bushra Mumtaz
Bushra Mumtaz el 3 de Mayo de 2019
Editada: Bushra Mumtaz el 3 de Mayo de 2019
Thanks Rik
and full error is Index exceeds array bounds.
Error in clone_mut_selection (line 14)
g = (randn(N,L)./beta) .* exp(-fitin(i));

Iniciar sesión para comentar.

Respuestas (1)

Roy Kadesh
Roy Kadesh el 3 de Mayo de 2019
Then your loop variable is bigger than fitin. You should make sure that this is not the case.
function [C] = clone_mut_selection(Ab,Nc,beta,fitin,xmin,xmax,ymin,ymax,f)
% C -> matrix of clones
% g -> vector with Gaussian mutation
% Ab -> matrix of antibodies
% N -> cardinality of Ab
% Nc -> number of clones for each candidate
[N,L] = size(Ab);
C = [];
if N>numel(fitin)
error('fitin is not big enough')
end
for i=1:N
  4 comentarios
Bushra Mumtaz
Bushra Mumtaz el 3 de Mayo de 2019
I m doing feature selection using ainet n then fiding accuracy with SVM classifier...Can I have your email id so that I sent you my complete code may b then I get some help
Roy Kadesh
Roy Kadesh el 3 de Mayo de 2019
You should be able to attach your m-files to the question or to a comment. I don't have any experience with machine learning, so I don't know if I can help you. Your entire function doesn't really make sense to me, because you didn't document all inputs. I don't know the norma function, and why you overwrote the function fit with a variable. You also forgot the ymin and ymax inputs and f (which is stored in ymin) is unused.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by