Index exceeds array bounds.
    8 views (last 30 days)
  
       Show older comments
    
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 Comments
Answers (1)
  Roy Kadesh
      
 on 3 May 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 Comments
  Roy Kadesh
      
 on 3 May 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.
See Also
Categories
				Find more on Audio and Video Data in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



