ほとんどの場合、スクリプトや制御関数で一度ファイルを読み込んだ後、そのデータを必要とする後続の関数に変数として渡すことをお勧めします。これは、グローバル宣言を追加することと同じくらい手間がかかり、よりクリーンで、メンテナンス性が高く、柔軟性があります。
変数をMATファイルに保存することもできます。ファイル内の各要素のタイプがdouble
の場合は、サイズが4GBを超えている必要があります。 MAT形式は効率的ですが、主な利点は、数値をテキストではなく数値として保存することです。有効数字が5桁または8桁の場合、ASCIIの数字はそれぞれ6.2または9.3 GBです。
あなたが本当に変数としてデータを渡したくない何らかの理由で、私はグローバル変数の上にネストされた関数を推薦する場合:もちろん
function aResult = aFunction(var)
data = dlmread(...);
var4 = bFunction(var);
function bResult = bFunction(var)
var4 = cFunction(data);
end
end
この時点で、あなたはまだビジネス機能をラップしています何かにscoping rulesが役に立ちます。今
、本当の問題は、このファイルのサイズだけであれば - つまり、それはメモリには大きすぎだとあなたはチャンク内のファイルにアクセスするためにdlmread
の範囲の引数を使用している - あなたはおそらく時間を取る必要がありますmemmapfile
で使用する場合はdesign a formatにしてください。このWikipedia pageは潜在的な利点を説明しています。
次に、brute force solutionがあります。
プログラマが「あなたがグローバル変数を使用したい」という言葉を発するのを聞いたことは一度もありませんでした。"この場合、大丈夫ですが、グローバル変数を読み取り専用で使用することを確認してください。) –