MATLAB Answers


Simulation stopped due to out of bounds error

Asked by Emmanuel Luevano on 28 Nov 2012

Hi, I'm running the next code into embedded matlab block from simulink, but when I run it, I have the next error message Simulation stopped due to out of bounds error, Enable debugging to pinpoint the location of the error.

I did enable debugging and it keeps pinpoint the line of D(s,:) = inf , until I stopped appears the same error message Simulation stopped due to out of bounds error. Block Embedded MATLAB Function (#19) While executing: none.

Can anyone please help me with this..


function D = distmat(X)
%DISTMAT Compute euclidian distance matrix from coordinates
[n,dim] = size(X);
D = zeros(n);
for j = 1:n
  for k = 1:dim
      v = X(:,k) - X(j,k);
      D(:,j) = D(:,j) + v.*v;
D = sqrt(D);


function p = greedy(s,D)
n = size(D,1);
p = zeros(1,n,'uint16');
p(1) = s;
for k = 2:n
  D(s,:) = inf;
  [junk,s] = min(D(:,s)); 
  p(k) = s;


Who is calling the function greedy? It looks like the argument 's' is large than 'n' (I'm assuming the second argument D is the same that constructed by the function distmat)

btw, in the matlab promt appear the next message

Runtime error: Expected an integer value, found non-integer variable s with value 0.0318328.

the function greedy is called by the next function


Lmin = inf;
L = 0;
pmin = uint16(0);
for k = 1:m
  % Nearest neighbour tour
	p1 = greedy(s(k),D);
  % Improve tour by 2-opt heuristics
	[p,L] = exchange2(p1,D);
   % Keep best tour  
  if L < Lmin
    Lmin = L;
    pmin = p;
% Output
p2 = double(pmin);
L1 = Lmin;

feel free to do any comment, regards!

Ah! So that's the problem. You need to make sure 's' is an integer. You can't index with a non-integer. For example, you can't do:

x = zeros(2);
y = x(0.2);

Sign in to comment.

0 Answers