How can I set the arrays dimensions?

550 ビュー (過去 30 日間)
Jay
Jay 2016 年 11 月 19 日
コメント済み: Walter Roberson 2016 年 11 月 19 日
How do I set the dimensions of an array so that it wont change?
i.e. rather than stating a vector being a 3 x 1 of zeros using the closed bracket specifiers "[0;0;0]"?
I have tried using curved brackets to specify the dimensions " a(3,1) = zeros, but if the input exceeds the initialized dimensions, no error is thrown.
The closed bracket dimension specifier is not practical for large dimension arrays.
Thanks in advance.

回答 (3 件)

James Tursa
James Tursa 2016 年 11 月 19 日
You can't "freeze" the size of native variables in MATLAB. They are free to change size at any time. (You could make an OOP class that forces the size to be what you want, but I don't think that is what you are really asking). E.g., to initialize a large array:
a = zeros(1,1000000); <-- sets "a" to a large vector
But that won't stop you from subsequently doing this:
a = 5; <-- sets "a" to a scalar
And the reverse is also true. Just by initializing a variable to a small number of elements will not prevent growing it dynamically later on in your code. That's just the way MATLAB works.

Jay
Jay 2016 年 11 月 19 日
Thanks guys,
I was hoping for a way to fix the dimensions but it is what it is.
  1 件のコメント
Walter Roberson
Walter Roberson 2016 年 11 月 19 日
You can store the array somewhere and give the user accessor functions.

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


Walter Roberson
Walter Roberson 2016 年 11 月 19 日
a = zeros(3,1);
However, numeric arrays cannot be forced to be a fixed size. If the user writes to an element outside the range, the array will be extended. You would need to create a new object class for fixed-size arrays.

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by