comment je peux créer une matrice triangulaire inférieure remplit par 1 de très grande dimension?

11 ビュー (過去 30 日間)
je veux créer une matrice triangulaire inférieure de dimension 32400 de la forme [1 0 0 0 0; 1 1 0 0 0; 1 1 1 0 0; 1 1 1 1 0; 1 1 1 1 1]
j'ai essayé de mettre par exemple "tril(ones(32400))", le resultat est ??? Error using ==> ones Maximum variable size allowed by the program is exceeded.
aidez moi s'il vous plait

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 7 月 25 日
編集済み: Azzi Abdelmalek 2013 年 7 月 25 日
Il semble que la taille de votre matrice est très grande, et ne peut être supportée par Matlab. Consultez le lien suivant pour plus d'informations:

その他の回答 (2 件)

Cedric
Cedric 2013 年 7 月 25 日
編集済み: Cedric 2013 年 7 月 25 日
La taille d'une telle matrice "pleine/full" de type "double" est environ 8GB
>> 8*32400^2/1e9
ans =
8.3981
soit plus de 4GB pour la triangulaire en admettant que les 1 uniquement soient stockés (matrice creuse/sparse, qui prend un peu plus de place en raison du stockage d'incides inhérent à cette structure de données). Le problème est que pour créer la matrice creuse, il faut soit créer la matrice pleine en premier et la convertir en creuse (ce qui demande au minimum 8GB + 4GB), ou la créer à l'aide de vecteurs d'indices et de valeurs. Cette dernière solution demande autant d'indices de lignes et colonnes qu'il y a d'éléments non nuls dans la matrice (2 vecteurs), ainsi qu'un vectur de valeurs. En type "double", cela fait 3*4GB juste pour ces vecteurs, sans compter la matrice résultante.

ABDO
ABDO 2013 年 7 月 25 日
la fonction "sparse" permet de générer des matrices de grande taille, mais je ne sais pas comment l'utiliser pour cette matrice

カテゴリ

Help Center および File ExchangeMathematics and Optimization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by