# How can I use a string input in a "for" loop to get a matrix of names?

37 views (last 30 days)
Sina Keshavarz on 1 Feb 2017
Commented: Zhigang on 3 Feb 2017
for i=0:2
end
what's wrong with this code? Matlab cannot read names I give to it. and here is the error: "Subscript indices must either be real positive integers or logicals."

Stephen Cobeldick on 1 Feb 2017
Note: the original question used an if:
if i=0:2
end
Zhigang on 3 Feb 2017
i should be started from 1. for i = 1:6 ....

Alexandra Harkai on 1 Feb 2017
The problem with this code is that (in MATLAB) indexing is from 1, not 0. Therefore a(0) is giving you the error.
As for the for loop (not if), if you want 3 inputs:
for i=1:3
end

#### 1 Comment

Star Strider on 1 Feb 2017
That’s not the only problem. For any name longer than one letter, it will throw a
Subscripted assignment dimension mismatch.
error.
You have to use a cell array (notice the curly brackets ‘{}’ designating it as a cell array):
for i=1:3
end
Note: In all answers and comments, please test your code before posting it if at all possible. If you cannot, always label it as ‘untested code’.

Stephen Cobeldick on 1 Feb 2017
Edited: Stephen Cobeldick on 1 Feb 2017
Your code has multiple mistakes: MATLAB indexing starts from one, you need to use a for loops, and you need to use a cell array:
N = 3;
C = cell(1,N);
for k = 1:N
C{k} = input('enter your name: ','s');
end
You should do the introductory tutorials, because they teach these very basic MATLAB concepts: