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

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Delwin
on 13 Sep 2013

if i try to make a string 111100011 into 1111, 000, 11

function [indi] = SeparatePattern (a) k=1; for i=1:length(a) while strcmp(a(i),a(i+1)) if strcmp(a(i),'0') indi(1,k)='0'; else indi(1,k)='1'; end end while a(i)~=a(i+1) k=k+1; end end

why i keep getting an error

Attempted to access a(2); index out of bounds because numel(a)=1?

*No products are associated with this question.*

Answer by Andrei Bobrov
on 13 Sep 2013

Edited by Andrei Bobrov
on 13 Sep 2013

Accepted answer

a = '111100011'; indi = regexp(a,'0+|1+','match')

Answer by Walter Roberson
on 13 Sep 2013

What *exactly* are you passing for "a" ? Are you invoking

t = SeparatePattern(111100011)

? If you are then you are passing a single decimal number (roughly one billion) to the function instead of a string. To pass a string in you would need to invoke

t = SeparatePattern('111100011')

Also take note that you loop "i" from 1 to the length of a. Consider the last iteration, when "i" has already become length(a), so a(i) is the final element in "a". Inside the "for" you have

while strcmp(a(i),a(i+1))

but if a(i) is the last element of "a", then a(i+1) is going to be past the last element of "a" and you would get exactly the kind of error you saw.

## 0 Comments