• ベストアンサー

matlabの行列計算の最大サイズはいくつですか?

顔認識の研究にmatlabを使用していますが 複数の普通の画像をそのまま行列にすると 87500×87500やそれ以上のサイズの 分散共分散行列を計算することになってしまい 「メモリが足りません」 と表示されます。 どのくらいのサイズまでmatlabは計算できるのでしょうか? また、3*90000くらいの大きなサイズの行列から covを使わないで(というか大きすぎて使えない) 分散共分散行列を求める方法があったら教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

matlab の浮動小数点は,double 型で 8 Bytes です. 30000x30000 の行列で,7.2 GB くらい. メモリ搭載量までは,作れますが,行列の積 C=A*B を計算するなら, A, B, C の三個分のメモリが必要です.

関連するQ&A

  • 分散共分散行列の逆行列

    以下の行列を考えます. 行列X(M行N列,成分の値は分散1のガウスノイズ) 行列Xの分散共分散行列S(M行M列), 行列Sの逆行列Y(M行M列) N=M+1のときはN≠M+1のときに比べて行列Yの各成分の大きさがかなり大きくなる,という結果が得られました. (計算にはMATLABの関数covとpinvを用いました.) これは数学的に正しいことなのでしょうか. また,正しいとしたらどうしてこのようなことが起こるのでしょうか. 行列Yの計算結果の例を以下に示します.(行列Yを500回算出し,それらの平均値を示しています.) http://wisteria.orz.ne.jp/download/pinvcovX.jpg 縦・横方向の軸は行列Yのインデックスを,高さ方向の軸は行列Yの成分の値を示しています. 上述した現象の原因についてご教授いただけると幸いです.

  • 行列式とその計算結果☆

    こんにちわ☆ミ 早速ですが、 スレイター行列式 シルベスター行列式 ヤコビ行列式 ヘッセ行列式 ロンスキー行列式 ファンデルモンドの行列式 これらのいずれか(複数ならさらにいいです)の一般形(サイズn×n)での行列とその行列式の計算結果がどうなるのか教えてください☆ミ お願いします(>_<)

  • MATLABの射影変換についての質問です。

    MATLABの射影変換についての質問です。 1枚の画像に3×3の行列をかけて画像変換するつもりです。しかし、その画像自体は3×3ではないので、直接かけることができません。 そこで、3×3以外の画像行列に、3×3行列をかけて、変換された画像を表示する方法をお聞きしたいです。 どうぞ宜しくお願いします。

  • matlabで複数条件のif文を行列計算で行うには?

    matlabで複数条件のif文を行列計算で行うには? matlabではfor文などは行列計算で回したほうが高速化できると聞きました。 for文でのやりかたはわかったのですが、複数条件でのif文ではどのように書けばよいのでしょうか? 自分のプログラムは以下のようなものです for i=1:100 for j=1:100 theta_kari=atan(abs(B(j,i))/abs(A(j,i))); if A(j,i)>=0&&B(j,i)>=0 theta(j,i)=theta_kari; elseif A(j,i)<0&&B(j,i)>=0 theta(j,i)=theta_kari+(pi/2); elseif A(j,i)<0&&B(j,i)<0 theta(j,i)=theta_kari+pi; elseif A(j,i)>=0&&B(j,i)<0 theta(j,i)=theta_kari+(pi/2*3); end end end よろしくお願いします

  • matlabでの長時間の計算について

    すみません、現在matlabで数値解析を行っております。 質問を以下にまとめたので、よろしければアドバイスをお願いします。 -------------------------------------------------------------- matlabで数十分かかると考えられる計算を行おうとしています。 その場合、計算後の大容量のデータは一般的にどのように保存すべきでしょうか? これまで、パラメータを50個用意してそれぞれ計算を行い、 後に見比べるために、目的の変数の値をプロットし、画像(角度などを指定してjpegに)として保存していました。 (for文を使って一定量パラメータを変化させる毎に、saveasを使ってグラフを保存していた。) 今まではパラメータ1つあたり数十秒程度で済む計算だったのでこれでも良かったのですが、 今後はパラメータ1個あたりに対しかかる計算時間が数十分になります。。 そこで、今までと同じように保存していくやり方では、もしグラフの保存方法(角度など)を間違えてしまった場合に かなりの損失になってしまうと思ったので質問しました。。 何か効果的なデータの保存の仕方はありませんでしょうか? 以後もパラメータをfor文を使って一定量変化させ、50個用意して計算していこうと思うのですが・・ 一応現状で考えているのは、saveを使ってworkspace内の変数(全て)をそれぞれ保存していくというものです。 何かその他に効果的なデータの保存方法などありましたら是非教えてください。 -------------------------------------------------------------- 上記のように、 計算時間のかかる計算をmatlabを使って行おうと考えているのですが、 計算機を走らせている間、動作が著しく重くなり、ほとんど他の作業が出来なくなります。 (これは避けられませんよね・・?) 私はmatlabを学校で使っているので、帰宅する際、計算機を走らせて帰ろうと考えています。 (節電家でなくてすみません。。) 問題は途中でメモリ不足などで計算がストップしてしまわないかということです・・ 一応、パラメータを変える毎に初期化すべき変数はzerosを使って初期化しているのですが、 パラメータ毎の目的の変数(6つ)は、多いとそれぞれ10^6×200ほどの配列となる可能性があります。 せっかく手間暇かけて走らせたのに、途中でメモリ不足などと表示されたら辛いなぁと思い・・ 現在使っている計算機はubuntu11.04で、メモリは992.8MiBなのですが、やはりこの計算機だと際どいでしょうか・・? -------------------------------------------------------------- コードに関する質問なのですが・・ uが50000000*200の配列で、それぞれの要素に値が入っているとします。 これをそのまま1行目~50000000行目まで、順にグラフにプロットすると、かなりの時間がかかるので、 1行目から、一定数(例えば100)毎の行の配列を グラフにプロットさせたいのですが、やり方がわかりません・・ x = -10: 10: 200 ; t = 0: 100: 50000000 ; waterfall(x,t,u) ; とするとエラーが出ます。 どなたか訂正出来る方、お願いします。。 waterfall以外でも全然構いません。 -------------------------------------------------------------- 以上長々と質問すみませんでした。。 どなたかご指導頂けると助かります・・ あと、分類というのがよくわからなかったので、その他となっています・・ ごめんなさい。。

  • C言語→MATLABへの変換で、困っています。

    学生研究でMATLABを使用しています。 光学測定系で画像を取り込み、それを解析する実験を行っています。 MATLABはプログラム内の値の変更や処理の追加できることから 大変助かっています。 そこで、もともとはC言語でやっていた3種類の処理を 一つのMファイルで行いたいと思い。 只今、C→MATLAB変換するプログラムの書き直しを行っています。 そのうち2種のプログラムは行列の計算がメインだったため何とか Mファイルに書き直すことができたのですが、 最後のひとつが難しい関数らしきものが多く、 MATLABに書き直すことができるプログラムなのかもわからない状態です。 そこで、 ・C→MATLAB変換可能なプログラムか? ・書き直すにあたってどこを部分を直せばよいのか? をアドバイスいただけないでしょうか? ↓MATLAB化したいC言語ファイル http://karispace.web.fc2.com/cmat2.c 一枚のbmp画像から4枚のdatデータを出力するプログラムです。 C言語とMATLABの三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。

  • MATLABについてです

    画像処理に使うMATLABについてです。 MATLABでimagescを使って、データを画像化しました。 画像化してカラーバーを表示させました。 ここからが質問です。カラーバーの値は普通にしてたらそのデータのままの値(自分の場合、光の強度)ですが、これをログにしたいです。 カラーバーの数値をログにするにはどうしたらいいのでしょうか? 簡単にできるのか、また、imagesc以外に別の何かを使うのか。 参考書を見ても、カラーバーの数値をログにするやり方はないので、詳しい方教えて下さい。 お願いします。

  • MATLAB 画像表示に関して

    卒業研究にてMATLABを使用しています。 MATLAB初心者です。 Aの画像とその他の画像を比べる評価実験を行う予定です。 Aの画像を細かく定義 Bの画像を細かく定義 Aの画像を表示させる 5秒たったら、画像をリセットして Bの画像を表示 画像をリセットして終了 というところまでは不格好ながらにもかけました。 これを、 A、B、C、Dの画像を細かく定義 Aの画像5秒間表示後、 リセット(真っ黒の状態に)して ランダムに(B、C、D、E)いずれかの画像を表示させる リセットして終了 という形に変えたいのですが、うまく行きません。 CDEの画像を定義した後、どのようにすればいいのでしょうか? ご教授いただきたく思います。

  • MATLABでのwhile文の条件について

    MATLABでのwhile文の条件について いつもお世話になっております。 MATLABでwhile文を用いる際、その条件として行列中の特定の次元の値が存在するかどうかという条件を用いたいと考えています。 例えばsize(a)=(10 10 50)のaという画像データを読む際に、a(:,:,1)から順番に読み込んでいって a(:,:,50)で自動に止まるようなwhile文を作りたいと考えています。 つまりこの場合は順番に読み込んでいって、a(:,:,51)が存在しないならばwhile文が終了するようなプログラムを行いたいと考えております。 for文を用いればすぐだとは思いますが、どのようなデータにも入力引数なしで応用が出来ないかと思いましてご質問させていただきました。 もし以上の条件を満たす適当な関数などございましたら、ご一報いただけたらと存じます。

  • MATLABの初歩?

    最近始めた画像処理。 MathWorksから提供されたサンプルプログラム。 MATLABから画像を読み込みヒストグラムを計算しようとすると 「関数’imhist’(タイプ'unit8'の入力引数)が未定義です」 と表示されます。 ちなみに、 ・image pressing ・image Acquisition などは評価版です。 対処方法をご教授いただける方いらっしゃいますか?