Index exceeds array bounds.

4 vues (au cours des 30 derniers jours)
Bushra Mumtaz
Bushra Mumtaz le 3 Mai 2019
Commenté : Roy Kadesh le 3 Mai 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 commentaires
Rik
Rik le 3 Mai 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 le 3 Mai 2019
Modifié(e) : Bushra Mumtaz le 3 Mai 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));

Connectez-vous pour commenter.

Réponses (1)

Roy Kadesh
Roy Kadesh le 3 Mai 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 commentaires
Bushra Mumtaz
Bushra Mumtaz le 3 Mai 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 le 3 Mai 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by