MATLAB: Is it possible to expand [0 {9}, 45 {2}, 0 {9}]

MATLABnot valid syntax

I have a matrix like [0 {9}, 45{2}, 0{9}] i want to expand it like
[0 0 0 0 0 0 0 0 0 45 45 0 0 0 0 0 0 0 0 0]? and it works like loop, [ 0{k}, 45{k}, 0{k}]
please help.

Best Answer

If you're stuck starting with a string in that special format, then this code will parse it and produce the output vector
str = '[-45_{2}, 120, 90, 60, 120, 90, -45, 90, -45, 60, 90_{2}, 45, 120, 90, 120, 60, 30, 45, 120, 45, 90, 60, 30, 45, 30_{3}, 120, 60_{2}, 30]'
% Get rid of brackets
str(str== '[') = [];
str(str== ']') = [];
words = strsplit(str, ',')
output = [];
for k = 1 : length(words)
% See if there is a brace
thisWord = words{k}
braceLocation = strfind(thisWord, '{');
if isempty(braceLocation)
% There no brace there.
theNumber = str2double(thisWord);
theRepeat = 1;
else
% There is a brace there.
theNumber = str2double(thisWord(1:braceLocation-2));
theRepeat = str2double(thisWord(braceLocation+1:end-1));
end
fprintf('Repeat %d for %d times.\n', theNumber, theRepeat);
% Repeat this number the required number of times and append to the output.
output = [output, theNumber * ones(1, theRepeat)];
end
% Echo to command window:
output