## index out of bounds because numel(x)=1.

### Kalyne (view profile)

on 17 Jun 2013
Latest activity Commented on by Walter Roberson

### Walter Roberson (view profile)

on 4 Jul 2016
Accepted Answer by per isakson

### per isakson (view profile)

I am trying to create a loop to call different variables at each time but I am getting this message "index out of bounds because numel(x)=1."

What am I doing wrong?

> x(1)=50;
>> x(2)=45;
>> x(3)=89;
>> x(4)=88;
>> for i=1:1:4
x=x(i);
end
??? Attempted to access x(2); index out of bounds
because numel(x)=1.

Lokesh Ravindranathan

### Lokesh Ravindranathan (view profile)

on 17 Jun 2013

The problem here is that once you get into your for loop, you create a new variable x which is of size 1*1. In the second iteration of your loop, you are trying to access the second element of this array, which is not available. Try using a different variable to the lhs of the assignment operation.

Mevlüt Yalaz

### Mevlüt Yalaz (view profile)

on 4 Jul 2016

you have to initialize first the dimension of x. Then you get what you want

Walter Roberson

### Walter Roberson (view profile)

on 4 Jul 2016

No, that is incorrect, Mevlüt Yalaz . The problem is that one value is extracted from x and that one value is used to overwrite all of x.

## Products

No products are associated with this question.

### per isakson (view profile)

Answer by per isakson

### per isakson (view profile)

on 17 Jun 2013
Edited by per isakson

### per isakson (view profile)

on 17 Jun 2013

This script

%%
x(1)=50;
x(2)=45;
x(3)=89;
x(4)=88;
disp(x)
for ii=1:1:4
x=x(ii);
disp(x)
end

returns

50    45    89    88
50
Attempted to access x(2); index out of bounds because numel(x)=1.
>>

The vector x is overwritten by the first value of x

### Kalyne (view profile)

on 17 Jun 2013
Edited by Walter Roberson

### Walter Roberson (view profile)

on 4 Jul 2016

Thanks for the answer! I am asking this because I am trying to solve the problem below. But now when I try to run, it appears :

"??? Cell contents reference from a non-cell array object.
Error in ==> TESTAR at 35
problem_statement=problem_statement{i}"

the program:

clear;
clear problem_statement;
problem_statement{1}= textread('problem_DEA_Hospital.txt','%s', 'whitespace', '');
problem_statement{2}= textread('problem_DEA_Hospital2.txt','%s', 'whitespace', '');
% read and print problem statement
for i=1:1:2
problem_statement=problem_statement{i};
problem_statement=problem_statement{i};
fprintf('Problem statement:\n%s', problem_statement);
end

per isakson

### per isakson (view profile)

on 17 Jun 2013

Your text would be easier to read if you format/markup it; use the {}Code button

clear problem_statement;
,'%s', 'whitespace', '');
,'%s', 'whitespace', '');
for ii=1:1:2
problem_statement=problem_statement{ii};
problem_statement=problem_statement{ii};
fprintf('Problem statement:\n%s', problem_statement);
end

Based on this code, it is not possible (for me) to understand what you want to do. The code says that you want to read two files and write something. Maybe the files each contains a single line.

Walter Roberson

### Walter Roberson (view profile)

on 4 Jul 2016

problem_statement=problem_statement{ii};

takes the ii'th element of problem_statement, and writes that over top of all of problem_statement, so afterwards problem_statement is probably going to be a string instead of a cell array of strings.

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi