4

私は matlab の初心者で、次のシナリオを解決しようとしています。

値を取得するために本質的にエンコードされた xor する必要がある大きな文字列があります。次のコード スニペットを使用して操作を実行しています。

 clear;clc;
 first ='abceeeeeeeeeeeeeeeddddddddddddd';
 second='defrrrrrrrrrrrrttttttttttttuuuu';
 result=bitxor(uint8(double(first)) , uint8(double(second)));

上記のコードでは、文字列の値をハードコーディングしています。matlab が文字列のサイズ制限を定義しているかどうか疑問に思っていましたか? 誰かがこの値をバイト単位でより理解するのを手伝ってくれるなら、それは非常に役に立ちます。

よろしくお願いいたします。

4

1 に答える 1

4

tere は変数に付随するサイズ制限ではないと思いますが、オペレーティング システムとコンピューター アーキテクチャに依存する利用可能なメモリに関しては確かに制限があります。

たとえば、32 ビット Windows 7 で Matlab R2008b を実行すると、コマンドの出力は次のようになりmemoryます。

Maximum possible array:            1128 MB (1.183e+009 bytes) *
Memory available for all arrays:   1470 MB (1.542e+009 bytes) **
Memory used by MATLAB:              294 MB (3.085e+008 bytes)
Physical Memory (RAM):             3519 MB (3.690e+009 bytes)
*  Limited by contiguous virtual address space available.
** Limited by virtual address space available.

「メモリ不足」エラーが発生する前に、5e8 要素の文字配列を作成できるため、memory出力と一致する 1e9 バイトになります。

MathWorks の Web サイトで、メモリ管理に関連するテクニカル ノートを確認できます。

于 2012-01-17T10:53:08.817 に答える