# Creating a matrix of blank spaces.

295 ビュー (過去 30 日間)
Matthew Moynihan 2011 年 1 月 20 日

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 2011 年 1 月 20 日
You could use repmat:
repmat(' ',[3 3])
##### 8 件のコメント表示非表示 7 件の古いコメント
Patrik Ek 2014 年 1 月 23 日
It is only so annoying that it is no constructor for char in matlab. This must be much slower than using an ordinary constructor.

サインインしてコメントする。

### その他の回答 (4 件)

Kenneth Eaton 2011 年 1 月 20 日
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
##### 0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

Petter 2011 年 1 月 20 日
Yet another way:
char(' '*char(ones(m,n)))
##### 1 件のコメント表示非表示 なし
Walter Roberson 2011 年 1 月 20 日
The inner char() is not needed.

サインインしてコメントする。

Hy 2011 年 1 月 20 日
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 件のコメント表示非表示 1 件の古いコメント
Hy 2011 年 1 月 21 日
Updated answer to reflect Walter's correction.

サインインしてコメントする。

Malcolm Lidierth 2011 年 1 月 21 日
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...'.

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by