1 :
設置者:
っということで,困っている私が設置します.
早速,私の悩み.
SIMULINKでFFTを使いたいのですが,出力がスカラーだから駄目と
いわれてしまいます.たとえばサイン波の出力にしても.
どうやったらベクトル値として出力できるのでしょうか.
よろしくお願いします.
2 :
設置者:2001/06/25(月) 19:44
あっ,早速間違った!
FFTブロックへの入力がスカラー値だから駄目らしいのです.
重ねてよろしくお願いします.
3 :
Nanashi_et_al.:2001/06/25(月) 23:57
どういうふうにFFTを使おうとしてるのかようわからんが、
どこぞにおまけ的についている Spectrum Analyzer を使ったらよいのでは?
4 :
設置者:2001/06/26(火) 03:17
おぉ!待ちに待った返事が!
私が試しているのは極めて単純なことなのですが,SIMULINKでSineWave
ブロックとFFTブロックとScopeブロックを繋げただけのモデルでFFTでの
周波数解析を試みたわけです.その結果,入力はスカラ値ではなくてベク
トル値になってなくてはいけないという警告付きで,見事に失敗に終わっ
てしまいました.ヘルプを見ると,SineWaveブロックからの出力をベクト
ル値として出力することが可能らしいのですが,そのやり方が分かりませ
ん.
っということなのです.診断の程,よろしくお願いします.
5 :
Nanashi_et_al.:2001/06/26(火) 06:54
matlabのOptimization toolbox と statistics toolbox
を買おうかどうか迷ってます。
特にOptimizationの方ですが、
これはどの程度役に立つのでしょうか?
使っている人教えてくださるとありがたいのですが。
特に多変数関数の最小(最大)化について、Matlabのfmins
よりいいのかどうかを知りたいです。
値段はそんなにしないのですが、当方学生なもので。
よろしくお願いします。
6 :
Nanashi_et_al. :2001/06/26(火) 13:02
ニューラルネットワークtoolboxってどれくらい使えるんですかね。
どなたか、matlabでニューラルネットの研究をしている方教えてください。
たとえば、BAMやマルチモジュールニューラルネット、対向伝播などの
アーキテクチャーは組めるのでしょうか?
7 :
Nanashi_et_al.:2001/06/26(火) 23:41
8 :
設置者:2001/06/27(水) 01:34
>>7 FFTブロックは,SIMULINKのBlock&Toolboxes/DSP Blockset/
General DSP/Transforms の中にあります.
ちなみに私が使っているのはMatlab 5.2 です.よろしくたのみます
です.
9 :
Nanashi_et_al.:2001/06/27(水) 23:16
>>8 おれはDSP Blocksetもっとらんからそのブロックの使い方しらんけど、
simulink extrasの中にあるPower Spectral Analyzerはいかんの?
これ使ってもsimulinkの中でFFTできると思うのだが。
10 :
Nanashi_et_al.:2001/06/28(木) 01:50
この前Matlab買いました。Mathematicaよりも使い勝手が
いいのかな?
11 :
Nanashi_et_al.:2001/06/28(木) 12:43
いいでしょう。
12 :
Nanashi_et_al.:2001/06/28(木) 14:28
>11
ほんとかよ。
13 :
設置者:2001/06/28(木) 16:17
>>9 確かに,Power Spectral AnalyzerでもFFTが可能でした.でもこの
Power Spectral Analyzerを用いる場合,FFT後のデータは数値とし
て取り出せるのでしょうか?よろしくお願いしますだ.
14 :
Nanashi_et_al.:2001/06/28(木) 23:25
>>13 当然あのブロックのままでは取りだせない。
自分でPower Spectral Analyzerが呼び出しているS-functionを改造すればよいと思われ。
15 :
Nanashi_et_al.:2001/06/28(木) 23:29
>>10,11
symbolic math toolbox を使えばmapleのカーネルが使えるとはいえ、
matlabは基本的には数値演算向けのシステムで、
Mathematicaは数値演算も出来るとはいえ基本的には数式処理のシステムだから
どういう使い方をしたいかで使い勝手も異なってくると思う。
俺は、数式処理はMathematicaの方が好き。
16 :
Nanashi_et_al.:2001/06/29(金) 03:33
>>15 んなことは慣れ次第ですね、値段の安さと数値演算の正確さからイマドキはMATLABだ
symbolicで数式処理、演算しdouble()で数値へ変換
MATLABでsimulinkをつかってシミュレーション、すばらしい環境だよ
17 :
Nanashi_et_al.:2001/06/29(金) 03:39
>>13 s-functionブロック使って自分で作ったら?
18 :
Nanashi_et_al.:2001/06/29(金) 10:11
matlab使いたいんですが、物凄く高価だという噂をききました。
個人で買うと、いくらでしょうか?
19 :
Nanashi_et_al.:2001/06/29(金) 10:21
20 :
Nanashi_et_al.:2001/06/29(金) 13:49
ver6のguideで作ったfigを
そっくりそのままm-fileに変えるのってどうするの?
21 :
Nanashi_et_al.:2001/06/29(金) 14:50
>そっくりそのままm-file
え?保存すればイイのでは?
状況がイマイチわからないですが
22 :
設置者:2001/06/29(金) 16:08
>>17 やっぱり,とっとと自分でやった方が早いか....
っとそこでまた素人質問を.
MATLAB-FUNCTIONとS-FUNCTIONの違いはなんでござるか?
おいらの理解では,CやC++でプログラム書いた場合はMATLAB
-FUNCTIONで,m-fileの場合はS-FUNCTION.これで正解で
やんすか?
23 :
三遊亭楽だい:2001/06/29(金) 16:34
24 :
Nanashi_et_al.:2001/06/29(金) 16:43
つうかなんでsimlink上でFFTしたいの?
結果をファイルに落としてからMATLAB上で処理たらダメなの?
まぁイイケドさぁ
イッソ全部m-file上でやっちまえばいい気もするしな
25 :
設置者:2001/06/29(金) 17:39
>>23 ちょ,ちょっと教えてくだされ.
なにせ,拙者素人なもんで.たのもぅ〜.
26 :
Nanashi_et_al.:2001/06/30(土) 00:23
MATLABのTシャツはどこで手に入りますか?
27 :
三遊亭楽だい:2001/06/30(土) 03:29
>MATLAB-FUNCTIONとS-FUNCTIONの違いはなんでござるか?
m-function∋s-fuction
が近いかな?ようはsimulink上にブロック仕様にしたのがs-fuctionとか思ってるが
>おいらの理解では,CやC++でプログラム書いた場合はMATLAB
>-FUNCTIONで,m-fileの場合はS-FUNCTION.これで正解で
>やんすか
cで書いた場合?まぁc-mexとかあるが・・・なんだかゼンゼン分け方が変だな
s-fuctionをc-mexでも書けるしな(激速)
m-fileはmスクリプト記述つうことじゃね?もちろんs-functionとしても使えるけど
あぁつまりM-fuction(s-functionも含む)はm-file(mスクリプト)でもc-mex(c言語)でも
記述可能でげす。
28 :
Nanashi_et_al.:2001/06/30(土) 16:41
>m-function∋s-fuction
はぜんぜん違うっしょ。
29 :
Nanashi_et_al.:2001/06/30(土) 17:31
>>28 ゼンゼン違うってことはないよ
昔のバージョンのsimulinkではホボ同じ形で記述されてたこと知らないの?
今はドンドン拡張されて見る影もないほど似てないけどな
30 :
Nanashi_et_al.:2001/06/30(土) 17:36
>>29 28だが。
昔に戻っても違うね。
mdlファイルとS-function勘違いしてないか?
31 :
Nanashi_et_al.:2001/06/30(土) 17:45
32 :
Nanashi_et_al.:2001/06/30(土) 17:59
28だが。
m-functionはm言語で記述される関数で確かにS-functionの中に組み込むこともできる。
だが、S-functionはm言語でしか記述できないわけではない。
CやC++などでも記述できる。
従って27が書いたm-function∋s-fuctionは間違い。
そもそも∋は集合と集合の要素の関係を示す記号だから∋の使い方も変。
27が言いたそうな包含関係なら⊃を使うべきだろう。
で、mdlファイルを記述している言語とS-functionを混同しいるやつは逝ってよしだ。
33 :
Nanashi_et_al.:2001/07/01(日) 00:47
Ver6 の fdatool はいいね!
固定小数点の信号処理をやってる人には
たまらないハズ。
34 :
Nanashi_et_al.:2001/07/02(月) 09:02
ここもまた駄スレになりつつあるなー・・・。
はぁ。
35 :
Nanashi_et_al.:2001/07/23(月) 23:50
とりあえずあげ
36 :
よろしくお願いします:2001/08/02(木) 01:57
マトラブで準乱数列を発生させるのに簡単な方法ってありませんか?
自分はvan der Corput列を発生させたいのですが、(あと2次元のZarembaの点列も)
3次元以上の場合はFaure列を作りたいのですが。
この関数を使えば簡単に作れるなど、知っている方がいたらよろしくお願いします。
37 :
たのもぉ〜う:2001/08/03(金) 21:10
S-Function に組み込むためのプログラムをCで書いたけど,このプログラムの中に
simulink上で定義した変数を読み込むときはどうするのでしょうか.
38 :
Nanashi_et_al.:2001/08/18(土) 21:55
matlabでlinmod使うってファイルを読み込むと、
simulinkでそのファイルを開けなくなるので、
いちいちmatlabを再起動さしています。
こんなことをしなくても、開いたファイルをクローズする方法はないのでしょうか?
39 :
Nanashi_et_al.:01/08/27 14:14 ID:HCPsNDs6
40 :
Nanashi_et_al.:01/10/19 02:12
MATLABをコンパイルするにはどうすればいいの?
41 :
looker on:01/10/19 18:46
How can we use ICA algorithms with SCILAB?
If anyone knows that, please tell me!
42 :
Nanashi_et_al.:01/10/20 22:22
単位行列を作るにはどうすればいいんじゃ?
43 :
Nanashi_et_al.:01/10/21 18:48
>>42 Nを行列サイズとして,
I = diag([ones(1,N)]);
44 :
Nanashi_et_al.:01/10/21 23:32
>>43 ありがとう!
なんで単位行列ないんだろうね
45 :
Nanashi_et_al.:01/10/21 23:36
↑ブラクラ
>>44 数値計算だと単位行列ってあんまし意味ないから
でしょうなぁ。T*inv(T)という結果だって、
正確には単位行列にはならず、doubleかfloat精度のもとで、
0になるつーだけだし。
名前間違えた・・・
逝ってきます
49 :
Nanashi_et_al. :01/10/22 12:17
MATLABで、
0 1 0 1 1
0 0 1 1 1
みたいな分散表現の行列ってどうすれば発生できるのでしょうか?
単位行列はeye。
51 :
Nanashi_et_al.:01/10/25 03:46
MATLABってすごいですよね。大好きです。
でも、ぼくの周りには否定的なイメージもっている人が
多くって、「MATLABで計算してみました」って結果
持っていくと、「ちゃんとCで作って計算しなさい」とか
言って、結果見てもくれない上司がいる。
ぜんぜんわけわかんないんだけど。なんでCじゃないと
見たくないって思うのかな。
遅いっていう人もいるけど、実際MATLABって遅いのかな?
ベクトル化することをよくわきまえた人がループ最小限
使うプログラム作ったら、Cで作ったのと同じくらいの
速度になってるんじゃないかと思うんだけど。
MATLABのCPU時間は簡単に測れるけどCのCPU時間の
はかり方知らないから比べたことない。
みんな、どう思います?
長くなってゴメン。
52 :
Nanashi_et_al.:01/10/25 05:43
みんなコピー物だろ。クソ高くて買えんわ
53 :
Nanashi_et_al.:01/10/25 11:53
>>51 同意。ベクトル化すれば十分に速い。
メモリに入りきる場合に限るけど。
>>53 やっぱりそうだよね!
ただ,メモリの件,おっしゃる通り.前使っていたPCは
1Gもメモリつけてたからほんとに快適だったんだけど,
今は128Mしかない.ちょっとデータ量が多いソフト
走らせるとずーっとHDにアクセスしたまんまの
状態になっちゃうんだよね...
以前,「MATLABは遅い」主義者の作ったソフト
見せてもらったら,行列計算するのにCみたいに
forループ使って書いてた.
そりゃ遅いよね.意味ないじゃんって感じ.
こういう,よくわかってない人たちのために,
「MATLABは遅い」説が広まってしまったんでは
ないかってのがぼくの想像です.はい.
>>52 タダで使ってますが何か?
コピーじゃないけどな。
>>55 以前MATLABで遅いからCで起こしてくれとの依頼。
あまりに遅いんで検証用にベクトル化。
速度50倍…
>>56 そうだよね!やっぱちゃんとベクトル化することを知っていれば、
MATLABは速いんだよ!
ところで、MATLAB Cコンパイラ、あれ、「MATLABは遅い」主義者が
安易に使っているんだけど、オプションとか何も選択せず
どーんと投げ込むと、ベクトル化したMATLABよりはるかに
遅いCのソースが出てくるよね。マニュアルみても
その辺のこと、きちんと書かれてなかった。あれ、
なんとかならんもんかと思います。
MATLABに苦言を呈するとすれば、万事説明不足
っていうところだと個人的には思ってます。
めちゃめちゃ高機能な関数とか作っておきながら、
設定パラメータの説明とかが今一つ不十分で、
自分で一つ一つ検証して確かめないと
恐くて使えなかったりする。
それから、>>56殿、MATLABタダで使ってるって、
それはどのようになさってるので?
御教えください、差し支えなければ。。。
実は開発者とか。。。
58 :
53=56は俺だが…:01/10/28 09:48
>>57 説明不足だとは思うが、多くはmファイルなんで、特に問題とは思ってない。
説明はあくまで手がかり。デバッガでmファイルの中追った方が理解は早いよ。
タダってのはサードパーティだから。
サイバネットからリンクも貼られてるし。
>51
いろいろ大変ですね。
ソフト開発が仕事の会社なんでしょうね。
昔々も、多変量解析するのに、統計ソフトじゃなく、
基本的な言語(今ならCだろうね)を使えなんて、
言われる時代もあった。いまじゃ考えられないね。
コチコチ作った物じゃ出力結果を信じてもらえない
>59
僕がいたところは多分、いまでも頑なにCでやっていると
思います。しかも、Cを外注で。MATLAB使えば
0から作ったっ手2,3時間でできちゃうことを。
Cで作ったって半日か一日がんばればできることを。
半月か1ヶ月の納期を設定して外部のソフト屋さんに
高いお金払って作ってもらってるんですよね。
理解できなかったです。
61 :
Nanashi_et_al.:01/10/28 18:11
>>60を書いたのは98じゃなくて51です。
ゴメン!
S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MATLAB
64 :
Nanashi_et_al.:01/10/29 20:36
>63
なんでまた?
65 :
Nanashi_et_al.:01/10/31 01:24
66 :
Nanashi_et_al.:01/11/01 00:58
MatlabでPLLをシミュレーションしたいのですが
どのようにすればいいのでしょうか?
67 :
Nanashi_et_al.:01/11/01 18:15
>>66 差し出がましいようですが、もうちっと詳しく書かれないと、
コメントはないんでないでしょうか。。。
68 :
Nanashi_et_al.:01/11/07 19:49
ほんとにコメントなくなっちゃってるよ.
66よ,ほんとに聞く気あんのか!
ないんだろなー...
MATLAB初心者です.
ちょっと同定のことでお伺いしたいんですけど.
FFTアナライザーでとってきた伝達関数のデータをMATLABにほりこんで,
伝達関数のモデルを求めたいんですけど,どうやったらいいかよくわかりません.
わかりやすいHPとか,本とかがあったら教えていただけるとありがたいです.
ちなみに,MATLABによるシステム同定の本を読んだのですが,難しくてわかりませんでした.
70 :
Nanashi_et_al.:01/11/14 02:06
MATLABでCPU時間はどうやって出すのですか?
71 :
Nanashi_et_al.:01/11/14 03:18
>70
あんたさー、そういうあまりにも簡単なことって、
こんな掲示板で聞くよりちょっと
オンラインマニュアルみりゃ1分で見つけられることじゃん。
72 :
Nanashi_et_al.:01/11/14 03:26
cputimeね。
詳しくは手持ちのマニュアルか、
Webに公開されてるマニュアル参照。
73 :
Nanashi_et_al.:01/11/14 04:05
固定小数点DSP使って精度出すのって結構キツイ。
そんなときはFixpointToolBOX
まんせー
74 :
Nanashi_et_al.:01/11/14 04:34
>72
あんた親切な人だな。
75 :
Mat_demo:01/11/14 04:35
僕も低コストでMATLABに触れてる。
付録で付いてきたデモ版の MATLAB ver4.2
をFMV-475で動かしてる。VBもこれでやってる。
低レベルな事しかやらないから、遅いし、HDD満杯だけど一応、動いてる。
だけど、デモ版はセーブができないから、simulinkなんかは、
ペイントに記憶しといて書き直しか、サスペンドしとかないといけない。
M_fileはfor分の中だけはコピーが使える・・・
ハアー。おかげでブロック線図書くのは早くなったが・・
無駄な努力ばかり
早く本物買わないと。
76 :
Nanashi_et_al.:01/11/14 04:35
>72
しかもこんな時間に親切。
77 :
Nanashi_et_al.:01/11/15 02:25
78 :
Nanashi_et_al.:01/11/17 11:57
ワラタ
>72
このレスを読んで,オンラインマニュアルをみたのですが,
割とわかりやすかったです.
同定の手順もなんとなく理解できました.
ありがとさんです.
80 :
Nanashi_et_al.:01/12/03 12:42
伝達関数をbode関数にいれるとボード線図が得られますが、
位相がなぜ-180〜180におさまらないのかわかりません。
伝達関数のs→iwとして、
位相=ArcTan[Re[伝達関数]/Im[伝達関数]]
ですよね。−270とかがでてくるのがどうしてもわかりません。
で、100歩譲ってそれを認めたとして、
Mathematicaでボード線図を書きたいのですが、
位相をどう出力して-180〜180におさまらない位相を表現したらよいのかわかりません。
基本だとは思いますが、よろしくおねがいいたします。
81 :
Nanashi_et_al.:01/12/19 17:47
simulinkで
入力→(サンプラー)→(デジタルPID補償)→(0次ホールド)→(プラント)→→出力
↑ ↓
←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
入力は単位ステップ入力で、サンプリングタイムは2秒です。
デジタルPID補償器、O次ホールドもサンプリングタイムは2秒です。
ここでサンプラーは必要なのでしょうか?
またいるのならsimulinkでサンプラーになるのはなにになるのでしょうか。
量子化という意味でsimulinkのQuantizerというのを用いて、
パラメータのQuantization intervalというところに2(秒)といれてもうまくサンプリングされません。
どのようにすればいいのか、わかる方よろしくお願いします。
下の矢印はフィードバックしているということです。
(矢印がずれてしまった。)
matlabのグラフィック環境をCから使用しようとすると
本体以外に、
MATLAB Compiler
MATLAB C/C++ Math Library
MATLAB Graphics Library
を買わなくちゃいけないのね。
いくらぐらいします?
84 :
Nanashi_et_al.:01/12/20 12:15
ディバックをしたときに、
例えば、行列の何番目が今使われているとか、確認できないんですかね?
Fortranとかだと、変数の現在入った部分が赤く表示されるんですが…
85 :
Nanashi_et_al.:01/12/20 13:00
>>83 値段は知らない。ライセンス形態による。
一般かアカデミックか、スタンドアローンかネットワークか、
WindowsかUNIX系か。
実行時にMATLAB持ってて良いのなら、本体だけでも出来る。
ActiveX使えば呼び出せる。
サンプルコードも入っているので、探してみるのが良いと思われ。
86 :
Nanashi_et_al.:01/12/23 00:39
87 :
Nanashi_et_al.:01/12/31 10:58
プログラムは小さくなるけど遅い
88 :
Nanashi_et_al.:02/01/11 01:17
プログラム自体は長くなるけど、
人間が判断できる部分は、判断してプログラミングすることで、
If文 FORroopを無くしてベクトル化すれば、他の言語より格段に早いですよ。
>>88 同意。でもそのベクトル化が難しいというか混乱を招く。
そこがMATLABの醍醐味なんですかねー。
今必死にループ削除のための配列を考えてます。
90 :
Nanashi_et_al.:02/01/11 01:59
FORループ回すのはFORTRANのほうが500倍くらい速いのを確認した。
加算とかも数十倍〜数百倍の差があると思う。
ベクトル化も心臓部をベクトル化できないようなものの場合どうしようもない。
速度の面ではおおいに不満はあるが、
正常に動くまでにかかる時間はMATLABのほうが3倍は早い。
合計実行時間が数週間にも及ぶようなもの以外は
MATLAB使うほうが効率的だと思う。
体は一つしかないけどPCは何台でも用意できるからね。
91 :
Nanashi_et_al.:02/01/11 03:36
PCを何台も使うのは迷惑だからやめてくれ
92 :
Nanashi_et_al.:02/01/11 11:06
>>90 3次元ベクトルの外積を大量に計算する場合、外積の公式を展開して
成分ごとに記述するのと、組み込み関数crossを使うのでは、やはり
後者の方があっと的に速いのですか?
訂正
あっと的ではなく圧倒的です。
すみません。
94 :
Nanashi_et_al.:02/01/11 12:41
>>92 流体とかその辺の計算ガリガリのシミュレーションなら
素直にFORTRANとかCを使ったほうがいいんじゃないかな?
チューニングのためにそういうのをいちいち調べるのって結構面倒だよ。
>>92 命令見たけど、crossのほうが速そうだね。
というか、こんな便利な命令あるなら使わない理由はどこにあるの?
コードも見やすくなって速度も上がる。いい事だらけ。
96 :
Nanashi_et_al.:02/01/11 13:37
MATLAB初心者です。
高速化の為ベクトル化をすると聞きましたが、
↓のような場合どうしたらいいのでしょうか?
x = [0:1:1000]
for a = 1:10,
y = a*x + 1
end
y;
これを a に関してもベクトル化をすることはできるのでしょうか?
x = [1:1:1000],a = [1:1:10]
y = a*x +1
みたいな感じで計算させたいのですが・・
上記の計算は、あくまで例で実際は、もっと計算量の多いものを扱っているので
すごく時間がかかって困っています。
どなたか教えてもらえませんか
>y = a*x + 1
y(a,:)=a*x+1
って事でしょうか?
それなら
a=[1:10].';
x=[0:1000];
y=a*x+1;
速くなるかどうかはわからない。
98 :
Nanashi_et_al.:02/01/11 15:39
ありがとうございます。
早速、自分の実験に適用してみます :)
すみません。
上記の例の場合、a*xの掛け算は確かにできるのですが、
x-aのような引き算の場合は同でしょうか??
>>94さん
レスありがとうございます。
そうですね、関数があるんだから使います。
分野は地球物理+電磁気学って感じです。既存のコードはFORTRANばかりなのですが
最近海外が結構MATLABになってきているので、MATLAB使い始めました。
101 :
Nanashi_et_al.:02/01/11 22:36
>>99 onesの乗算で、結果と同じ大きさの行列作ってから減算してみるとか。
y= x'*ones(size(a))-(a'*ones(size(x)))';
もっとスマートな方法有ったら教えて。
>>99 y=repmat(x.',1,length(a))-repmat(a,length(x),1);
スマートではないが、こっちのほうが速い。101のコードの倍以上だった。
>>102 repmat、*onesよりスマート(w
いつも*ones使ってたよ。覚えときます。
で、x.' は、x' でいいんでないの?
結果は同じだけど。
何か役に立つ局面でも有るんかな?
>>103 .'は転置、'は共役転置です。
複素数じゃなければ結果は同じです。
ありがとうございます。
しかし、MATLAB... 奥が深いですな
106 :
Nanashi_et_al.:02/01/12 20:37
シミュレート板いけば。。。。
107 :
Nanashi_et_al.:02/01/12 22:42
108 :
Nanashi_et_al.:02/01/12 22:54
入口URLもキボーン
110 :
Nanashi_et_al.:02/01/14 00:13
111 :
Nanashi_et_al.:02/01/14 04:26
>>100 ftp.mathworks.com/pub/contrib/v5/tools/f77toM.pl
使ってみるのはどう?
俺は使ったことないけど。
ここのサイト、なんかいろんなツールとか、デモとかあっておもしろいな。
112 :
連立方程式:02/01/15 12:06
このスレいつも参考にさせていただいています。
早速ですが、UX=Yの連立方程式を解きたいのですが、
Uが3000*3000の非対称密行列で、全成分複素数のため、
サイズが150MBもあります(こんな大きくなりますか?)。
使用OSはWin2000でメモリ512MB実装しているのですが、
LU分解などではメモリ不足で解けません。何か良い方法は
ありませんでしょうか。
素人質問ですみません。
113 :
Nanashi_et_al.:02/01/15 13:20
>>112 ワタシも以前同じことをやろうとしてできなくてあきらめました。
Matlabってメモリ食いすぎ。
114 :
連立方程式:02/01/15 13:45
>>113 えっ、そうなのですか・・・。
ショックです。修論用にずっとMATLABで書いてきて、もうちょっと
小さいサイズだったら計算できるのです。反復法をやろうとしても
メモリ不足って言われるし。ていうか3000*3000程度で150MBって・・・。
今更FORTRANに変えようにも、MATLABの数値積分とか便利な関数ふんだんに
使ってしまったからなあ・・・。困り果てました。
とにかくレスありがとうございます。
115 :
Nanashi_et_al.:02/01/15 15:30
標準では、real,imagともに倍精度(64bit)になってるんで
3000*3000*2*8=144*10^6 って事です。
singleって命令で単精度(32bit)に精度を落とせば
半分まで容量を減らす事は可能です。
ちなみに他の言語でもこれくらいはメモリ食うはずです。
116 :
連立方程式:02/01/15 16:08
singleを使うと、数学関係のコマンド、関数が全く使えなくなって
しまいませんか?
US = single(U) ;
だとサイズは半分になるのですが、
[L,U]=lu(U) ;
とかが通らなくなります。現時点では
[LI,UI]=luinc(sparse(U)) ;
が少しはサイズを小さくできるかなと思うのですが。反復法を中心に
検討を続けてみます。
>>115さん、ありがとうございます。
117 :
Nanashi_et_al.:02/01/15 20:41
メモリに収まる計算をしてるうちはスイスイ動くけど、メモリが足りなくなるとクソだからなぁ。
メモリを1G以上積むかぁ。
118 :
Nanashi_et_al.:02/01/16 04:16
120 :
Nanashi_et_al.:02/01/17 05:10
mccすげー。メチャ速くなるね。
121 :
Nanashi_et_al.:02/01/18 00:04
>>114俺も同じような経験してるよ。メモリ使い切るとほんとに遅いな。ちょびちょびclearして
いくようなスクリプトを書いている自分がかわいらしい
>>120MCC萌える
122 :
Nanashi_et_al.:02/01/18 01:31
>120
いざとなればベクトル化するとすげ−速くなるし
そのまま他言語から呼べるのもGood
123 :
Nanashi_et_al.:02/01/18 03:07
制御屋の間ではすごく支持されてるね。
ただ、大体の方向性をとりあえず手っ取り早く検証するにはいい
かもしれないけど、規模の大きい演算や、あるいは正確に処理量
を見積もりたいとか、DSPやFPGAで実装するまでを考えるとなると・・・・?
適材適所でツールをいろいろ使い分ける必要があるように思う。
・式解析->Mathematica/Maple
・式がほぼ完成しておおよその数値を得たい->Matlab+Simulink/Octave
・最終大規模シミュレーション->C/C++/FORTRAN
ただ、ライブラリで何やってるのかよくわからないし、ま、僕が
十分使いこなしてないってこともあるけどね、上のスレのMatrix
計算なんかはC/C++でgsl/newmat使ったほうがよっぽどスマートだと
思うんだけど?
僕は電気屋だけど、計算結果にのみ興味がある他分野のひとなら
いざしらず、電気屋は少なくともこう言うソフト"も"使え
るのは良しとして、これでしかシミュレーション実験ができない
ってのはちょっと考え物だと思うYO。多少なりとも実際のCPUの
動作を意識して演算の工夫のひとつもできないとネ。
最近IS-95がらみのライブラリまでできてるけど、学生の研究以外、
企業でこんなの使って通信方式のシミュレーションしてる人って
いるのかな?
124 :
連立方程式:02/01/18 07:38
>上のスレのMatrix
>計算なんかはC/C++でgsl/newmat使ったほうがよっぽどスマートだと
>思うんだけど?
仰るとおりです。というか、あなたの「用途に応じて使い分け」
激しく同意です。今回MATLABを使ってみて痛感しました。
とりあえず今はMATLABで書いて、あまり大きくない領域で計算して、
今後はFORTRANで書き直します。もちろんMATALBの便利な機能とは
連携しつつ。
とても参考になりました。ありがとうございました。
125 :
Nanashi_et_al.:02/01/20 21:02
matlabって、なんてメモリー食うんでしょな。
768MBのメモリーつんだマシンでも、125000*125000の行列解こうとしたら
MamoryERRORがでまくりです。
でも、便利な関数多いからな〜。
126 :
Nanashi_et_al.:02/01/20 21:43
>>125MemoryERROR出てんのは、アンタの頭だYO!
行列解く前に、掛け算して考えろや
127 :
Nanashi_et_al.:02/01/20 22:04
正直、
>>125はどんな言語を使っても同じだと思われ。
倍精度、複素数ならMATLABに限った話じゃないでしょ。
128 :
Nanashi_et_al.:02/01/20 23:29
>>126,127
125を弁護するわけではないが。
sparse行列って知ってる?
自分の知識のなささらけだして恥ずかしいだろ。特に126。
129 :
Nanashi_et_al.:02/01/20 23:39
ていうか
>>125は125000*125000の行列としか書いてないし、
普通は密行列と思うだろ。その行列がsparseできるかできないかなんて
第三者にはわからん。
なんで
>>128はいきなり
>>125の行列が疎行列であるかを
知っているような書き込みをするの?
130 :
Nanashi_et_al.:02/01/20 23:47
>>129125000*125000の行列を密行列と思う人間は珍しいよ。
131 :
信号処理系:02/01/21 00:24
まあまあみなさま、メモリ不足だからってイライラせずに
マターリ行きましょうよ。良スレなんだから。
で今のところ、
>>123氏の「matlabでさっとテスト、本番は
C++かFORTRANで」というのが正解ですかね。
132 :
Nanashi_et_al.:02/01/21 00:59
matlabでテスト、その後にキモをCで書いて表示なんかをmatlabで書くハイブリッド。
これ最強?
133 :
Nanashi_et_al.:02/01/21 13:40
134 :
Nanashi_et_al.:02/01/21 23:24
C/C++/FORTRANで計算し倒したあと。
ファイルのある部分だけ2倍したり、対数をとったり・・・
ファイルの読み書きするのにawk/perlも捨てがたい。
Cなんかでやるのは邪魔くさいでしょ。
それと
計算機を単なるツールと考えて欲しくない電気・電子・通信・情報系
の人には何でも言いから(PICはちょっと・・・)一度アセンブラも書いて
欲しい。アセンブラを書いたことがあるかどうかはCコード見ればかなり
はっきりわかります。コードの切れ味が違うんですよ。逆の場合、かなり
気持ち悪ーいコードが並びます。
配列のインデックス(アドレッシング)のやり方や。
switch/caseなんかを多用せずにサブルーチンのアドレステーブル使ってる
なんてことでわかりますね。
考えに考えて処理量削減したDSPのアセンブラルーチンの入り口と出口で
ポートたたいて、、、
モニタしてるオシロ/ロジアナでその間隔がキュッと短くなることに喜び
を感じる・・・一種の病気か?
ゴメン、ここはMATLAB板だった・・・
>>134 病気です。
でも今のパソコンに欠けてるのはそういう精神でしょう。
136 :
Nanashi_et_al.:02/01/22 03:10
138 :
Nanashi_et_al.:02/01/22 08:57
B4のとき初めてDSPやったよ。あせんブラで。苦労しましたよ。
なんたって、メモリにコードが入んないの。かなり苦労して
何とか入れ込んだけど結局メモリは1マスもあまらなかった。
ある意味快感を感じたのは否めない。
139 :
Nanashi_et_al.:02/01/22 23:17
スレ違いだ( ゚Д゚)ゴルァ!
って俺もDSP使ってるけど。
Real-Tiime Workshop向けに、TLCで色々書いてる。
でもあまり凝りすぎると、コンパイラの最適化に時間が掛かりすぎると言う諸刃の剣。
今使ってるDSPだと、全くアセンブラ使わなくても結構速いYO!
インラインで、H/Wアクセス用にnop数えて入れてるだけだな(w
140 :
Nanashi_et_al.:02/01/23 01:21
病気の134ですが・・・
>今使ってるDSPだと、全くアセンブラ使わなくても結構速いYO!
どこのDSP?マルチチップとかパイプラインのふかーい奴?
DSPはちゃんとDSPのアーキテクチャと機能、それと目的とするアルゴリズム
をきちんとわかってプログラムするかどうかで1桁ぐらい簡単にかわりますよ。
んなコンパイラなんかの吐くコードとかわらんようだと寂しいじゃないの?
書いたコードを人(極めてよくわかってるような)にみてもらって批判してもら
ったことは?ま、ここまでやるのは就職して売り物作るときでいいけど。いや
な奴でも優秀な人の意見に聞く耳持てばスキルアップしますね。
ロジック回路の設計なんかだとシミュレートをそのまま実機に移すわけで、
あんまり頭を切り替えなくて済むってのがうれしいところ。
アナログ関係でもIC設計なんかはほとんどSPICEに頼り切って設計しても
たいてい実機と極めてよく一致します(100GHzあたりからは怪しいらしい)。
でも他の分野の人はシミュレーションなんてホントに一つの設計値をはじき出す
だけで実機の実現にはそれ以外の知識が必要になりますよね。たとえばエンジンの
燃焼実験をシミュレートしてもそれだけじゃエンジンはできない。
シミュレーションってどういう位置付けなのかな?簡単に済ませたいからこそMATLAB
に人気があるのかな?
そもそも、このスレッドにきてる人って何屋さんですか?
141 :
Nanashi_et_al.:02/01/23 01:24
140です。日本語おかしいわい
意見に聞く耳 -> 意見に耳を傾ければ
某社のパイプラインの深くてVLIWのヤツ(w
簡単に1桁性能上がるようなコード書く人がDSPのプログラム担当しないYO!
当然アセンブラ経験者ですよ。
しかし残念ながら、俺のコード批評してくれる人は居ない。
つか、社内に俺以上居ないのよ。
小さいハードメーカーのソフト担当者だから(´д`)
自社ハードをMATLABやSimulink(RTW)から動かせるようにするのが、俺の仕事の半分くらい。
だから俺の場合は、おそらくこのスレ来てる人とは立場違うんだよなぁ
MATLAB使うんじゃなくて(便利だから使うけど)MATLAB使ってもらうのが仕事。
それも自社ハード売る為に。
だからシミュレーションの意義に関しては俺もサッパリ(w
143 :
Nanashi_et_al.:02/01/24 03:17
研究室にてWINDOWS版のMATLABを使って私のパートナーがニューラルの重み計算
(バックプロパゲーション)を長々とやろうとしてPCを占領してしまいました。
こういう長期演算をやってるときにMAC版ならControl+cやらComand+.で計算を
止められるけどWIN版の場合どうやって止めるのでしょう?強制終了しかないの
でしょうか?いかんせん途中まで計算してるのでワークスペース上の値をむげに
消したくないのです。でもこのまま昼間に使う人がいるのに彼に占領させる分け
にもいかない・・・。どうすればいいのでしょう?
長レス スマソ
>>143 MATLABコマンドウインドウをアクティブにしてCTRL+Cを押しつづけて運がよければ止まるよ。
145 :
Nanashi_et_al.:02/01/24 03:43
>>143 この時期、PC少ないとこだと占領されると痛いね。
WIN2kとかだと、タスクマネージャで優先順位変えられるけど、
効果あるかわからん。
その人、突然PCおちたときのためにデータを毎回とってないのかなぁ?
それだったらいつでも消してやれるのにな。
私もMATLABの経験が浅いので聞きたいのですが、
Bode関数の周波数の範囲を自動でなくて手動で固定したい時の
方法教えてください。
146 :
Nanashi_et_al.:02/01/24 03:51
WindowsPCの占領をする奴は,常識がかなりないだろう
147 :
Nanashi_et_al.:02/01/24 04:05
>131
>「matlabでさっとテスト、本番は
>C++かFORTRANで」というのが正解ですかね。
MATLABしか知らない者なんですが、CやFortranでシミュレーションする場合、
やっぱり一から全部自分で書かれるんですか?たとえば、固有値求めるとか、
FFTやるとか、MATLABなら実に簡単なことでも、そこから書き始めないと
いけないかと思ってMATLABから一歩も出られないんですけど。。。
初心者質問で恐縮ですが、お教えください。
>やっぱり一から全部自分で書かれるんですか?たとえば、
>固有値求めるとか、 FFTやるとか、
ある程度はLAPACKのようなライブラリに頼っています。
もちろんMATLABほど便利ではありません。
ただ私の場合は、過去に作成されたほとんどのソースがFORTRAN
で書かれているというのが今ひとつMATLABオンリーに移行できない
大きな理由です。同分野の海外研究室のソフトを見せてもらったの
ですが、UIやグラフ表示などはMATLABでそこからFORTRANを呼び出して
いました。私も初心者なので十分な答えになっていなくてすみません。
>148様
レスありがとうございます.やっぱりライブラリを使われるのですね.
でもMATLABほど便利ではないのですか...
以前もどなたかが書いておられましたが,多少計算が遅くてもソフトが
早く完成してしまうので,トータルとしてはMATLABの方が早く結果が
得られてしまうような気がして...
どうして大きなシミュレーションはFortranなどの方がいいんでしょうか.
大きなシミュレーションほどMATLABの方が便利な気がしてしまうんですけど.
>>149さん
ベクトル化がしっかりできていればMATLABも十分速いと思います。
しかし反復を使うと極度に低速化してしまうので・・・。
それからやはり使用目的というか分野にも大きく依存する
問題ではないかと思います。
>150様
確かに、ループが主となるシミュレーションは、MATLABでは遅いのは
わかります。
でも今のように2GHzのCPU+1GBメモリでものパソコンさえ簡単に
手に入ってしまう時代ですと、eigやらfftやらの関数を一から作り
始めるのにかかる手間をかけてまでfortranでやったりするのが
割に合わないような。。。
で、こういうことを避けるためライブラリを購入しようと
探してみたところ、それこそMATLABなんてすぐ買えるくらいの
値段していたんですよね。
いえ、こう書くと、なんかMATLAB万歳でFortranや他の基本言語なんか
使うメリットなし、という主張をしているようですが、逆でして、
他の言語使ってシミュレーションしてみたいんです。でも、上に書いたような
ところがあって、なかなか足を踏み出せません。
ちなみに、分野は通信(無線)です。
153 :
Nanashi_et_al.:02/01/26 16:08
重症な病の140です。
>>147 あなた、バリバリの電気屋さんじゃないですか。
ダメダメMatlab
なんかに頼ってちゃ!すぐにディスクから消してください藁。
まぁ消すこたぁないですが、あなたのスレ見てるとFORTRANも
ご存知ないようだし、ここはまっとうなシミュレーションプログラム
の書き方を勉強してください。それでFORTRANはスパコンを使うなら
意味のある選択ですがそれ以外は、あんまり電気屋がのめりこむにはおい
しくないです。あなたの場合、もうちょっとハードが見える言語がいいよう
に思いますので、C/C++をお勧めします。ライブラリはgsl(C)、
マトリックスなら newmat(C++)がいいです。特にgslは最新の数値演算研究
の成果が盛り込まれてたりします。研究に使うような環境としてはFreeBSDを
お勧めします。下はすぐに使えるMath. Lib集ですが、コンパイルしなおした
ければ、ports.tar.gzを展開して、make一発でソースをネット上からダウン
ロードして、パッチを当ててコンパイルまでしてくれます。
ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4-stable/math/
ftp.freebsd.org/pub/FreeBSD/branches/-current/ports.tar.gz
ただ、"Cによる科学技術計算"あたりの
ソースを手で打ち込んでも大したことないと思いますけど。上のライブラリ
にない場合、工夫してください。ソフトは買うより作るより探すことだった
りします。
僕がMatlabに対してべったりじゃない最大の理由は、
”一つの会社の製品だから”
これがコンパイラ言語のように規格化されていくつもの会社、あるいは
フリーでもあるっていうならいいんですが、一社だけしかないっていうのは
ちょっと危険です。
もし倒産したら・・・、天変地異でなくなるっていうことも可能性とし
てはあるでしょ藁?プログラムっていうのはすごく寿命が長いんです。
デファクトスタンダードでもいいんですが1社しか供給できないってのは
僕としては心配ですね。因みにMatlab互換にはOctaveっていうのがありますが。
ツールとして何を使うかっていうのは速度もあります。でももっと大きい
のは上に書いたような環境とか慣習による部分が大きいです。たとえば
Matlabでアナログ回路シミュレーションもできますが、電気屋は普通
使いません。これは30年の歴史を持つSPICEが絶対的なステータスを確立し
ていて、各アナログ部品メーカからもSPICEネットリストが配布され、CADなども
このネットリストを吐けるように作られているってことがもっとも大きいです。
"今度こういうワーストケース保証の製品を作りましたんで一つご検討よろしく”
ってな具合でスパイスネットリストをもらうこともあります。
ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4-stable/cad/
www.analog.com/technology/dataConverters/precisionVoltage/spiceModels.html
あと
>"多少計算が遅くても"
この多少っていのが人によってケースバイケースなんですよ。シミュレーション
においてはそこまでシビアにリソース効率を考えないかもしれませんが、考えない
っていうのと考えられないってのは違います。それと多くのエンジニアっていうのは"わずかな"
違いを飯のねたにしていることが多いです。
長くてゴメン
154 :
Nanashi_et_al.:02/01/26 16:22
一つ忘れてました。
上でSPICEのことを書きましたが、フリーの3f5は多くのメーカから
提供されてるPSpice用のネットリストがそのままでは通りません。
PSpiceネットリストのPOLY部分を3f5用に変更する必要があります。
PSpiceは多少読みづらい旧2G系のPOLY書式を使っているためです。
PS:
電気屋なら答えられるようになって欲しい。
多くのCPU/DSPで、ループをカウントするのに
1)i=0,1,.....N-1 とカウントしてNになったら終了するのと
2)i=N,N-1,.....1 とカウントして0になったら終了するのでは
さてどちらが速いでしょう。
155 :
Nanashi_et_al.:02/01/26 17:38
>>154 答え:2
終了判定でゼロフラグを使えるから?
156 :
Nanashi_et_al.:02/01/26 17:44
MATLABで作ったモデルの絵を編集したいのですが、
BMPかWMFでしかコピーできないようです。
illustratorで扱いたいので、できればWMFを使いたいのですが、
illustratorにそのままペーストできません。
Windowsに付属のペイントにはペーストできるのですが、
これだと出力がBMPになってしまいます。
フリーのソフトでWMFをペーストできて、
ドローソフトが使える形式で出力してくれるものはないでしょうか?
>153様
詳細なレス、ありがとうございます。
とても参考になりました。
そうなんです、僕、Fortranも知りません。学生のとき授業でやった
くらいです。なんか今更フォートランっていう気も起こらなくて(失礼)。
で、Cへぜひ移行したかったわけなんですが、貴重な
ライブラリ情報、ありがとうございました。周囲もみんなMATLAB
使っているので、こういう情報が全然わかりませんでした。
これを機会に挑戦してみたいと思います。
ただ、Mathworksがつぶれたらどうしようって心配は不要なんじゃ
ないですか?MATLABのディスク一枚持ってたら、これでもう
閉じた世界として完成しているわけですし。幸い、Mathworksは
定期的に新しいライセンスを更新しないと使えなくしちゃうなんて
こともしてないですし
159 :
Nanashi_et_al.:02/01/26 22:07
確かにMathworksはつぶれないな藁
gslは良い。かなり良い。しかし、絵が描けんのよ。ビジュアライゼーションの
ツールとしては、MATLABは手放せないな。
>>158 C覚えとけば、MATLABの内部から関数呼び出せるので楽ですよ。WINDOWSならdllを作って呼び出す形になります。MATLABは時間のかかる
計算にこういう抜け道があるから好き。
160 :
Nanashi_et_al.:02/01/26 22:22
>>156=157
>illustratorで扱いたいので、できればWMFを使いたいのですが、
なんでイラレでWMFなんですか?EPSの方が良くないですか?
>>160 MATLABからのコピー出力はBMPかWMFしかないからです。
ちなみにillustratorは入力ならWMFをサポートしています。
>>161 「エクスポート」-「EPS」の方が余計なクリップボード拡張ソフト経由
しない分よくないですか?特にTeXを使っている場合は。
私は電気関係ですが、TeXとEPSペアで考えてしまうのでEPSはき出せる
MATLABは重宝しています。しかし
>>161氏のようなコピペという手段も
あるのだということを学べて良かったです。感謝。
>>162 あ、もしかしてMATLABってEPSはき出せるんですか?
学校で使ってるのはver5.2なんですが見当たらなかったです。
お使いのMATLABは、どのバージョンでしょうか?
MATLABって言うか、Simulinkの絵を出力したいという話でした。
まぎらわしくて、ごめんなさい。
MATLABのFigureならエクスポートでEPSとか出力できますもんね。
165 :
Nanashi_et_al.:02/01/27 03:54
>>164 simulinkの絵もEPSで吐き出せるよ。
>>help print
>>165 あ、そんなコマンドがあるんですか。要チェキ!
まとめ:
print -depsc2 -sslwnd foo
simulinkのslwndの名前のウィンドウの絵をfoo.epsに保存。
90度回転された出力がされるので、texを利用して、
\includegraphics[angle=90,height=78mm]{foo.eps}
angleオプションで補正。
とても快適になりました。どうもありがとうございます。
167 :
Nanashi_et_al.:02/01/27 13:58
ていうかillustratorはどこで使うつもりだったの・・・?
90度回転?
>159
貴重なアドバイス,本当にありがとうございました.
これからCの道に,新たな修行の旅に出ます.
169 :
Nanashi_et_al.:02/01/28 01:51
>>155 ピンポーン!正解です。
>>158 >ただ、Mathworksがつぶれたらどうしようって心配は不要なんじゃ
つぶれるっていうのはネタです。
でも、会社っていうのはそれこそ自社の都合で、”やーめた”ってこともあるんです。
ソースも公開されてない、->内部で何やってるかも一つよくわからないし。
やーめたってあとで、バグが見つかったなんてときはやっぱり困るような気がします。
Octaveで通るようにしておくとかなにか自己防衛手段は講じておくのがいいような
気がしますけどね。
何より、自分の頭の中身が一製品に依存してるってのがどうも気持ち悪くないですか?
Matlabべったりの人って、アルゴリズム考えるときどうやって考えます?
僕はアルゴリズムはC/C++で考えるのが癖になってますけど。
>>159 >。しかし、絵が描けんのよ。ビジュアライゼーションの
>ツールとしては、MATLABは手放せないな。
こういうのはそのとおりだと思う。”きれいに”とか”使いやすく”
って言う部分はどうしても製品でないと実現できないものがあります。
一ツールという位置付けと、Simulinkがないと考えられないっていうのは
意味が違うと思うんですけどね。
170 :
Nanashi_et_al.:02/02/03 14:17
正式名称はマトラボではなくマットラボ
>170
でも綴りからいうとマットラブのはず。不思議。
172 :
Nanashi_et_al.:02/02/03 16:13
pcolorとかで出力された画像をワードとかにコピペしたときって
ビットマップにしかならないのかな
軸の文字までビットマップになるのがいやなんだけど。
173 :
Nanashi_et_al.:02/02/04 14:31
発音はマットラブ。マにアクセント。
セミナー逝った時、MathWorksの人がこう発音してた。
ちなみにSimulinkはシムリンクで、シにアクセント。
当然英語で喋ってたんで、他の内容はサパーリ解りませんでした(鬱
174 :
Nanashi_et_al.:02/02/11 01:16
>>171 Matrix Laboratoryの略だからですよ。でも、みんなマ(ッ)トラブって言ってますね。
175 :
Nanashi_et_al.:02/02/11 01:30
まっとらぶだいすき
176 :
Nanashi_et_al.:02/02/11 06:24
マットラブはぁはぁ
MatLabで、ボード線図なんかを表示すると、
[rad/sec]で表示されますが、これを[Hz]で表示するには
どうしたらよいのでしょう。
基本的過ぎるな質問ですいません。
178 :
Nanashi_et_al.:02/03/21 17:57
2ぱいでわる
だめじゃないか!たかひろん
あげとく
181 :
Nanashi_et_al.:02/04/23 22:47
まっとらぶ大好き
厨房みたいな質問でスマソ。
ニコルス線図描く時"ngrid"と入れると、
グラフ上に(グリッド)線が出て来ますが、
あの(グリッド)線の意味がわかりません。教えて下さい。