# Creating a matrix of blank spaces.

314 views (last 30 days)
Matthew Moynihan on 20 Jan 2011
Edited: Patrik Ek on 23 Jan 2014
If I wanted to create a matrix of blanks spaces I would use the following command:
A = [' ', ' '; ' ', ' ';];
but what if I do not know the length or width of the matrix? If the matrix was for ints or double types it would be easy:
A = zeros(column_number, row_number);
Is there a command that does the same thing as the zeros command but for characters?

Sean de Wolski on 20 Jan 2011
You could use repmat:
repmat(' ',[3 3])
Patrik Ek on 23 Jan 2014
It is only so annoying that it is no constructor for char in matlab. This must be much slower than using an ordinary constructor.

Kenneth Eaton on 20 Jan 2011
If you are only making a 1-D matrix (i.e. a row or column vector) then the function BLANKS is the way to go:
blankStr = blanks(4); % Makes a string of 4 blanks
For a 2-D matrix, the REPMAT-based solution from Sean de is probably the simplest, but here's another variant using the functions RESHAPE and BLANKS:
blankMat = reshape(blanks(4),2,2); % Makes a 2-by-2 matrix of blanks

Petter on 20 Jan 2011
Yet another way:
char(' '*char(ones(m,n)))
Walter Roberson on 20 Jan 2011
The inner char() is not needed.

Hy on 20 Jan 2011
There is not a command for characters that is analogous to zeros. Common commands for initializing matrices of size M x N (where sz = M*N) include
The function blanks will produce a row vector. It is convenient because it avoids including a literal space character in your code, but specifying your choice of whitespace character and considering Locale Settings may produce clearer code.
Please note that because MATLAB uses column-major order [Wikipedia], I think that your example syntax should read
A = zeros(number_of_rows, number_of_columns);
The solutions by Sean and Kenneth can be restated using this syntax as:
sz = [number_of_rows, number_of_columns];
A = reshape(blanks(prod(sz)), sz);
B = repmat(' ', sz);
display(isequal(A,B));
All of these solutions work equally well to produce arrays of dimension 1, 2, ... n.
##### 2 CommentsShowHide 1 older comment
Hy on 21 Jan 2011
Updated answer to reflect Walter's correction.

Malcolm Lidierth on 21 Jan 2011
Why is there no direct equivalent to zeros for chars? In most languages, strings are zero terminated so x=char(zeros(1,10)) may be a 10 element row vector in MATLAB's internal tables but will be perceived as a null string in most languages. Writing to a pre-allocated, but empty, char vector from a DLL or mex-file will usually crash MATLAB with a segmentation violation regardless of what numel returned in MATLAB before the call. Filling with non-zeros instead, e.g. blanks, avoids that. With short strings, my habit is to use '0123...'.