2016-05-08 2 views
-2

lengthが何であるかを理解しようとしています。ベクトルA = [1,2,3,4,5,6,7,8]を持っていて、length(A)をコード化すると、要素の数は8になります。Matlabの長さのコードは何ですか?

lengthコマンドはどのように機能しますか? 私は私がそれを理解してください、それは

A = [could be any size]; 
for i = A % takes each element of A 
    i = i+1; % add 1 for each new element thus counting the elements 
end 

のようなループのためだ考えてきました。

+1

実際には 'max(size(X))'と同じです。コマンドウィンドウで 'open lenght'を入力すると表示されます(' length'がオーバーライドされていないか、 。 – Matt

+1

@ zheyuan-li、 'length'は組み込まれているので、読み込むソースコードはありません。より良い提案は、メモリなどの配列の表現について読まれることです。 –

+0

Matlabは内部的にそのサイズを追跡するデータ型を使用すると思います。長さは、関数が返す変数の一部にすぎません。ループが関与していないことを確かめてください。何が最終状態になるのでしょうか? Matlabでは、この種の情報はスクリプタに隠されています。 – Bernhard

答えて

-3

システムレベルでアレイのサイズにアクセスするような動作が期待されます。 Matlabはもちろん、メモリを求めなければならないので、それがどれだけ大きいかを知っているので、実際にそれを実行して数を数える必要はありません。

いずれにしても、サンプルコードは必要に応じて機能しません。 official documentationによれば、各ループにおいてiは、配列Aのスライスに等しい。 iは、Aに影響しない独立変数です。 i=i+1は、Aの特定の部分に等しい変数に1を追加することを意味します。あなたが本当にその後、要素

c = 0; 
for ii = 1:length(A) 
    c = c+1; 
end 

しかし、あなたが最初の場所でのAの長さを必要とするループを開始するために、「カウント」にしたい場合は

....

0

がどのようにlengthを理解するためにMatlabが内部でデータ構造をメモリに保存する方法の詳細を理解する必要があります。あなたは変数に配列を代入すると、配列に関するMATLABも 店舗情報(例えば、

アレイヘッダ

を:Mathworks社は本当にHow MATLAB Allocates Memoryから関連ポイントに多くの詳細を開示したが、ここにありませんクラスとディメンションとして)、ヘッダーと呼ばれる個別のメモリ部分に格納されます。

したがって、寸法はすでにアレイとともに格納されています。 lengthが必要とするのは、それらの最大値を見つけることだけです。また

その(同じドキュメントから)注目に値する:

次のトピックでは、配列や変数を扱う際MATLAB®ソフトウェア がメモリを割り当てる方法についての情報を提供しています。 の目的は、コードを書くときにメモリをより効率的に使うのを助けることです。ただし、 のほとんどは、 の内部操作に関係する必要はありません。これは、MATLABが自動的に のデータストレージを処理するためです。

MATLABソフトウェアは、データをどのように扱うか 内部のすべての情報は、将来のリリースでは変更される場合があり

...。

関連する問題