figure内のグラフから任意のプロットを選んでlegendを つけたいんですけど出来ますか? -- (sanage) 2006-11-21 13:49:58
コードに無いポイントがコンタープロットでたまに表示され るんですけどどうしたらいいですか? -- (メアリー) 2006-11-21 23:49:19
Matlabでつくった図をepsにしてIllustratorで 開けると、むやみやたらに複合パスがかかります。 ひとつひとつ解除するのがうざくて仕方ないので、 matlabのほうで、このようなパスが入るのを解除 する方法があれば教えてください。 もしなければmorimoさんが実装してください。 -- (Tenma + rice) 2006-11-22 18:43:34
y = a/(1+b*exp(-cx)) の式のパラメータa,b,cをMATLABで算出したいのですが、 どのようにすればよいのでしょうか? どなたかお願いします。 -- (T2) 2006-12-26 22:01:32
T2さんへ パラメータの算出についてもう少し詳しく教えて下さい。 xとyのデータが手元にあり、そのデータをよく説明するa,b,cの値を知りたいということでしょうか? -- (てっぺ) 2007-01-01 16:49:40
Data Acquisition Toolboxを使ってトリガーを待つ場合に、 トリガーが入力された時刻をmsecのオーダーで取得 する方法はないでしょうか? -- (ハザウェイ) 2007-05-22 00:44:57
Matlabってオブジェクト指向のプログラミングができるんだぜ -- (名無しさん) 2007-06-16 17:26:38
>Mのない世界さん Mとは何のことですか?彼らのことですか? -- (満太) 2007-06-22 17:44:27
>満太haaaaaaaaaaaaaaaaaaaaaaan 八ジ〆まU〒→_φ(゚ω^* )♪ Mってあれっしょ でも言うとまずいw ャハ〃くなぃ?(´σ`) -- ( 諸君 私は戦争が好きだ) 2007-06-22 21:59:59
>メアリーさん 気にしなけれはよいと思います -- (名無しさん) 2007-06-24 15:15:46
以前、プログレスバーの話が出てましたが、 既存のコマンドの waitbar を使えば出来ます。 -- (以下、こむたそにかわりましてVIPがお送りします) 2007-06-24 15:28:26
MATLABライクな数値解析ソフトウェア のフリーな実装 という所で、どーしてRがないのですか? -- (名無しさん) 2007-06-24 19:03:19
>名無しさん すいません、Rは使った事がないです。 RってSのフリーな実装じゃなかったでしたっけ? 今ざっとR用のソースコード眺めてみましたが、 あんまりMATLABに似てない気がします。 もし間違ってたら教えてください。 Rもリンクに加えますー。 -- (管理人っす) 2007-06-24 22:40:51
管理人っすさん 勘違いしてました。 確かに、RはSのフリーな実装のような ものらしいです。 すいませんでした。 -- (名無しさん) 2007-06-25 23:09:22
MATLAB初心者です。 データを正規化し(各々のデータからデータの平均値を引き、データの標準偏差で割る作業) 多項式の近似式を求めた後、もとの状態(正規化を外した状態)の近似式にしたいのですが、 どのようにすれば良いのか分かりません。どなたか教えていただけませんか? -- (かんちゃん) 2007-06-26 14:15:10
上記質問、解決しました。すんません。お騒がせしました。 -- (かんちゃん) 2007-06-27 08:51:18
得られた多項式に標準偏差をかけて 平均値を足したらいいのではないでしょうか。 -- (名無しさん) 2007-06-27 14:07:02
あ、自己解決済みでした 笑。すいません。 -- (名無しさん) 2007-06-27 14:07:36
3*10000の行列に関して、 特定の列パタン(例えば[0.5;1;0.1]みたいな) の数を数えたいとき、いい方法はありますか? 今は、行列aに対し、 sum(a(1,:)==0.5 & a(2,:)==1) & a(3,:)==0.1)) でやってるのですが、もっといけてる方法があれば 教えてください。 -- (しぎすけ) 2007-07-03 12:10:03
sum(a(1,:)==0.5 & a(2,:)==1 & a(3,:)==0.1) でした -- (しぎすけ) 2007-07-03 12:11:00
二次元の行列をimagesc()で適当なカラーマップ を使って塗りつぶしているのですが,データのな いところ(NaN)も一番小さな値の色で塗りつぶさ れてしまいます.黒とか白とかにする方法はあり ますか? 同様に,指定した数値の範囲より大きい値や 小さな値は,指定したカラーマップの両端の値 で塗られてしまいます.これを任意の色に割り 当てることは出来るのでしょうか? 初歩的な質問で大変恐縮ですが,よろしくお願い いたします. -- (のび犬) 2007-07-05 09:22:53
>しぎすけさん v = [0.5; 1; 0.1] のとき、 sum(prod(double(a==v*ones(1,10000)))) はどうでしょう? スピードは遅くなりそうですが、vの要素数が 増えても書き換えなくて済みます -- (まーぼ) 2007-07-06 19:09:28
調べても分からないことがあり、書き込みさせていただ きます。 近似曲線をFIT関数を用いて求めたところ、CFITオブジ ェクトができました。この中身にある数値(近似曲線の 係数)を読み込みたいのですがどのようにしたら読み込 めるのでしょうか。 知っている方がいましたら教えて頂けないでしょうか。 宜しくお願い致します。 -- (ゆーすけ) 2007-07-30 21:32:43
Xが行列であり [rowX,colX] = size(X); [U,S,V] = svd(X,0); w = (U'*/rowX-3*w_old; とあるとき、 3行目の w = (U'*/rowX-3*w_old; がどういう意味でしょうか? 特に、 .の意味がわかりません。 ^3は、同じ行列を3回、掛け合わせる ことかなあ、と思ったりします。 -- (たか) 2007-08-16 20:46:16
申し訳ありません。 また、コードを追っていたら、 わからないのが出て来ました。 Bもwも行列なのですが、 B = [B w]; この意味です。 行列をつないでいくと言う意味なのでしょうか? もしそうなら、どのように? -- (たか) 2007-08-16 21:33:56
>たかさん たぶん解決済みと思いますが・・・ ^3は思ってらっしゃる通り、3乗です。 .は行列の対応要素同士の演算です。 一方、.がなければ行列の演算です。 A=[0 1; 2 3] A.^3 A^3 を見比べてみてください。 式の意味自体はわかりません。 B=[B w]; は行列をつないでいくという意味であってます。 どのようにかは、 B=[0;1] w=[1;2] B=[B w] B=[B w] ・・・ と実行してみてください。 -- (excel使い) 2007-09-13 23:27:45
>ゆーすけさん fit関数がわかりません。なんでしょう。 まあとにかく、Matlabオブジェクトであれば、 Aがcfitオブジェクトとすると、 x=get(A,'PropertyName'); %'PropertyName'の部分には適切なプロパティ名を入れてください。 で取り出せるはずです。 'PropertyName'の部分がわからなければ、 get(A) で一覧が出てくるはずです。 -- (excel使い) 2007-09-13 23:28:53
>のび犬さん 初歩的なんてとんでもない。 なかなか奥が深いところだと思いますよ。 a=[1 2 10;NaN 0 10 ;-10 0 10]; b=imagesc(a); c=~isnan(a); set(b,'alphadata',c);%NaNのところを透明にして、Caxisの色が見えるようにする。 set(gca,'color',[0 0 0]); %[0 0 0]のところに好きな色を入れてください。この場合は黒。 でなんとかできます。 ただし、alphamapを使っているので、 figureを外部出力したときはどうなるやら。 指定した数値の範囲より大きい値や小さな値の場合も c=~isnan(a);の部分を c=~(a>=10|a<=-10); とかしてやればできちゃうかも。 もっと細かく制御したければimagescをつかわず、 imageをつかって、自分で値とcolormapを制御してやりましょう。 -- (excel使い) 2007-09-13 23:40:30
>excel使いさん NaNの色の設定の件,どうもありがとうございました! 似たようなこといろいろ考えましたが,こういうや り方があったんですね.恐れ入りました. お礼が遅くなってごめんなさい.今日は仕事への意欲10倍です(笑) -- (のび犬) 2007-10-06 09:30:03
0と1が無作為に並んでる数列があって、 そのうち1が連続して並んでる場合、その 偶数番目を0にしたいんですけど、エレガント な方法があれば教えてください。 たとえば [0 1 0 1 1 0 1 1 1 1 1 0 1 1 0]の場合は [0 1 0 1 0 0 1 0 1 0 1 0 1 0 0]としたい わけです。 Matlabの神様よろしく! -- (てんま食いたい) 2007-10-19 12:43:41
>てんま食いたいさん A=[0 1 0 1 1 0 1 1 1 1 1 0 1 1 0]; for i=2:length(A) if( (A(i-1)+A(i)) == 2 ) A(i)=0; end end Matlabぽくないけど、これしか思いつきません。 たとえば、[1 1 1 1]があればi=2の時に、[1 0 1 1] i=3の時には2番目は0になっているので、スルー。 i=4の時、[1 0 1 0]です。 -- (excel使い) 2007-10-20 11:31:14
>excel使いさん おぉ、これはなかなかいいですね。 どうもありがとうございます。 -- (てんま食いたい) 2007-10-22 10:25:05
卒研にて、下記のプログラムを作成したのですが、これと同じ波形が出力されるようにsimulinkを使ってブロック図にて作成するとなると、どうすればよろしいでしょうか? clear allsyms z n p T syms z n p T h=0.1; A=[exp(-h) int(exp(-T),0,h);-0.5 1]; b=[0;0.5]; c=[exp(-p) int(exp(-T),0,p)]; G=c/(z*eye(2)-A)*b; R=z/(z-1); Y=R*G; y=iztrans(Y); t=1; for m=0:9, v(1,m+1)=subs(y,n,m); for l=0:9, w(1,l+t)=subs(v(1,m+1),p,l*1e-2); end t=t+10; end figure plot(w) grid on -- (たむむ) 2007-10-23 14:39:18
下記のような構造体の.matファイルがあります。 X: [1x1 struct] Y: [1x166 struct] Description: [1x1 struct] RTProgram: [1x1 struct] Capture: [1x1 struct] X軸は時間、Y軸は時間と共に変化する166個の データです。 このY軸を分解したセル配列に変換するには どうしたらよいのでしょうか? 初心者で申し訳ありません。 -- (kz) 2007-11-02 10:32:44
kzさん もう解決しましたか? struct2cell のヘルプを見てみてください。 -- (mnk) 2007-11-15 17:05:17
matlabで乱数を複数回発生させるタスクを持つ シミュレーションを組んでいます。 C言語ですと複数乱数を発生されると偏りがあるそうでが、 matlabのrand関数は、多次元均等分布するのでしょうか。 サイバネット社のホームページでは、rand関数は 数学的に多次元均等分布が証明されている メルセンヌ・ツイスタをサポートしているとありますが、 これは、rand関数がメルセンヌ・ツイスタと同程度の 精度が期待できるということでしょうか -- (hito) 2007-12-24 12:53:57
自信は全くありませんが、基本的には同程度の 精度が期待できるということではないでしょうか? もし不安があるのならmatlab exchabgeに Mersenne twisterのプログラムが置いてあるので 使ってみては、どうでしょうか。 そのプログラムにはmex fileが含まれてますが、 それは松本さんのプログラムを元にしているらしいです。 -- (matlabの神の執事) 2008-01-10 18:30:22
エラーバーの上下についている横棒の長さを変えたいのですが、どうすればいいのか 分かりません。 どなたか教えていただけませんでしょうか。 -- (てんま食べた) 2008-01-11 19:57:31
無事、解決しました。 天才○り○しやさん どうもありがとうございました。 -- (てんま食べた) 2008-01-11 20:32:50
はじめまして。 質問させていただきます。 フーリエ変換を行うとき、振幅と位相の振幅だけをabs()で取り出して 、例えばequalizationなんかでコントラストを変えて復元するというのは可能でしょうか? -- (気疲れ) 2008-02-27 02:46:20
はじめまして. Matlab Compiler 3.0.1と 4.6を用いています。 compilerからfortran code(あるいはc code)を吐かせて Intel fortran または Intel Cでコンパイルして 高速な実行ファイルを作成したいと思います。 後者(ver.4.6)ではCTFとMCRの使用を前提としているらしく http://www.cybernet.co.jp/matlab/support/techkwdb/search_view.php?id=1670 これらを使用しないcodeはできそうにないことがわかりました。 前者(ver.3.0.1)ではできそうです http://www.mathworks.com/support/solutions/data/1-15PEA.html?solution=1-15PEA そこで, (1)Intel fortran をコンパイラに設定するには? mex -setup でできる mbuldopts.shのどこを変えたらよいのでしょうか? (2)出てきたcodeはあまり可読性が良くないですが, 人間の手で可読性を高めることはできますでしょうか? もしお分かりの方がいらっしゃればお教えください。 -- (KY) 2008-03-07 20:12:35
KYさん 基本的にver.3.0.1では,ANSI C準拠のcompilerに対して source codeを出力できます。 (1)をするためには matlab user's guide Ver.3: $MATLAB/help/pdf_docs/compiler/compiler3.pdf をよく読んで mexopts.sh mbuildopts.sh の CC= の部分を適当に書き換えてください。 (2)はコツコツと読むほかないのでは? -- (Seagull) 2008-03-08 14:19:06
こんにちは。 初歩的な質問ですみません。教えてください。 (10000,244)の中にデータが0~13までランダムで入っていて データが 0=グレー 1~4=黄色 5~8=オレンジ 9~12=赤 13=紫 と色を付けて2次元プロットする場合、 どのように記述すればいいでしょうか? 現在、1つ1つFor文で回してデータを見て 色をつけてプロットしていて、 時間が大幅にかかってしまい困ってます。 -- (ピーマン) 2008-03-12 17:49:36
ピーマンさん、亀レスですが 10000x244の2次元ビットマップを表示するということでいいのでしょうか? こんなのはいかがでしょう。 for文よりはだいぶ速いと思います。 % 0~13までの乱数データ生成 data = floor(14*rand(10000,244)); % 0~13までに対応したカラーマップを作成 colmap = [0.5,0.5,0.5; ... 1,1,0; ... 1,1,0; ... 1,1,0; ... 1,1,0; ... 1,0.5,0; ... 1,0.5,0; ... 1,0.5,0; ... 1,0.5,0; ... 1,0,0; ... 1,0,0; ... 1,0,0; ... 1,0,0; ... 1,0,1]; % 表示 imagesc(data, [0 13]); colormap(colmap); -- (まーぼ) 2008-05-26 18:35:30
guideで作成したGUIアプリケーションに対して、引数を渡して起動したいのですがどうしたらいいでしょうか。あと、GUIのパーツにタブって無いのでしょうか。 -- (天津) 2008-06-12 13:58:31
scatterまたはplot( ,'.')でscatter plotをしたときに、 同じ座標に複数の点が打たれたら、 打たれた数に応じて色を変えて表示をすることは できないでしょうか。 -- (名無しさん) 2008-07-12 09:37:59
>名無しさん これ以外とめんどくさそう。 誰か簡単な方法知らないかな? -- (まーぼ) 2008-07-17 14:48:02
matlab2008aを利用しているのですが、メニューの言語を日本語から英語に変えたいのですが http://www.cybernet.co.jp/matlab/support/techkwdb/search_view.php?id=1153 上記のURLで書いてあることをしても英語に変わりません。 ほかに方法はありませんでしょうか? -- (emishi soga) 2008-07-31 11:37:43
emishiさん OSはWindowsですか? OSの言語設定は日本語になっていますか? matlabは日本語バージョンでしょうか? -- (まーぼ) 2008-08-01 11:45:11
まーぼさん とりあえずOSの設定言語を英語にしてみたらmatlabの方も英語になりました。 Windows XP SP2 matlabは海外の大学のHAP Licenseって言うやつで言語は英語のはずなんですが日本語XPに入れたため日本語になってしまいました。 が、とりあえず英語でつかえているので問題は解決しました。 ほかに何か方法があるんでしたらよろしくお願いします。 -- (emishi soga) 2008-08-05 04:48:08
Matlab 2007bと、Viual Studio 2005の質問です。 既存のC++で作られたライブラリの関数をラップして (要は、mdlOutputs内で既存の関数をコールする)、 C++ MEX S-functionを作ろうとしています。 Visual C++ 2005上で作成/ビルドして、*.mexw32を作っているのですが、 simulink上でこれを実行しようとすると、 「無効なMEX-ファイル*****; 指定されたモジュールが見つかりません。」 というメッセージが出ます。 サイバネットが出している、C-MEX-S-ファンクションチュートリアル (http://www.cybernet.co.jp/matlab/library/library/file/T/TT034.pdf?id=TT034 ) の、「5.1 既存Cコードの利用」に、 1. C MEX S-Function 内で外部関数のextern 宣言を行う。 2. コンパイル時に外部ファイルもコンパイルする とあったので、1.のみ行って、なんとかビルドはできたのですが、まだ同じ エラーメッセージが出ます。 やはり2.もしないといけないようなのですが、VC++で外部関数も一緒にコンパイルする 方法が、わかりません。 上記のマニュアルに書いてある方法は、Matlabコマンドラインからの すごく単純な構成のもののコンパイルなので、今やろうとしている、 たくさんのヘッダファイルやらdllやらをリンクしているモジュールの コンパイルは、とても難しそうです。 -- (やんぼ) 2008-08-07 23:18:29
'"2008-09-23 02:30:00.1"' というフォーマットで書かれたストリングのセルから時間データを抽出するよいアイディアをどなたかご存知でないでしょうか? もしも、''がなく、"2008-09-23 02:30:00.1" というフォーマットならば、sscanf(%d-%d-%d %d:%d:%d); によって時間データを抽出できるのですが。。 -- (いかわ) 2008-10-24 15:44:14
いかわさん sscanf('"2008-09-23 02:30:00.1"', '\"%d-%d-%d %d:%d:%d\"') でいかがでしょう ダブルクォーテーションは\でエスケープしてやると読み込めそうです -- (まーぼ) 2008-11-06 17:49:59
もっと単純なこんな方法でも読み込めます a = '"2008-09-23 02:30:00.1"'; a = a(2:end-1); sscanf(a, '%d-%d-%d %d:%d:%d'); 最後の00.1という文字列を%dで読み込もうと しているのがちょっと不安ですが、 %fでなくても大丈夫なのでしょうか? -- (まーぼ) 2008-11-06 18:10:24
XY平面上で格子状に配置された各点にZの値を与えたものを3次元で表現したいのですが、何か良い方法はありますでしょうか? meshで試してみたのですが、今後欠落する点も出てくるのでplot3で試したところ3×3の9点では上手くいったのですが、4×4の16点では「入力因数が多過ぎます」とエラーが出てしまいました。 このような説明で伝わるか心許ないですが、ご助言を頂けると幸いです。 -- (DO) 2008-11-25 18:38:43
スイマセン、解決しました。単に自分の知識が足りないだけでした。。長々と申し訳ありませんでしたっ。 -- (DO) 2008-12-06 20:41:53
初歩の質問で申し訳ないです。 例えば、黄色い背景に赤い四角の物体の画像があるとして、 その赤い四角の物体の色を黒にする、というようなプログラムを組むにはどうしたらよいでしょうか。 教えてください。 -- (初心者) 2008-12-09 17:23:05
2つの画像(BMP)を読み込んで、一定時間交互に表示し続けさせるにはどのようにすればいいでしょうか? また、二つの画像の提示間隔(例えば、a.bmpが表示されてから何秒後にb.bmpを表示するか)とアニメーションの提示時間(交互に何秒間表示し続けさせるのか)を指定するにはどのようにすればいいでしょうか? ご協力お願いいたします。 -- (東方全敗) 2008-12-15 17:44:22
> 初心者さん MATLABで画像を作る、もしくはimread等で読み込んだ 際には画像データは3次元配列で表現されます。 例えば100x100ピクセルの画像は100x100x3のサイズの 配列になり、3つの平面にはそれぞれRed, Green, Blueの 値が0〜1の値として格納されます。 黄色を残したままで赤→黒にするのであれば、 (R, G, B) = (1, 0, 0)のピクセルを探して (0, 0, 0)にすれば良いかと思います。 例: I = imread('test.jpg'); % 画像を読み込む I( I(:,:,1)==1 & I(:,:,2)==0 & I(:,:,3)==0 ) = 0; -- (まーぼん) 2008-12-30 19:07:49
> 東方全敗さん MATLABにはいくつか時刻取得方法が用意されていますが 精度にそれほどこだわらないのであればtic, tocを利用する のが手っ取り早くてオススメです※。手軽にアニメーション を行うには、画像をfigureに描き、drawnow()関数で フラッシュを行い、指定時間だけ待ち、次の画像を表示という 方法で一応実現できます。 例:10秒の間0.5秒間隔でアニメーション a = imread('a.bmp'); b = imread('b.bmp'); cont = 0; %フレームカウンター figure; tic; while(toc<10) %10秒の間アニメーション if toc > cont*0.5 %0.5秒間隔でフレームを更新 if mod(cont, 2) %カウンターが偶数の時はaの画像を表示 image(a); else %奇数の場合はbの画像を表示 image(b); end drawnow() %確実に描画させる cont = cont+1; end pause(0.05); %CPU使用率が上がるのが嫌な場合はpauseを入れる。(フレーム更新の精度はその分落ちる) end ※画像の更新にmSecの時間精度を必要とする場合はMATLAB の関数では実現出来ないのでネットで誰かが作った外部関数 を探しましょう。Windowsのマルチメディアタイマー等を MATLABから利用できるものがあるはずです。例えば心理 実験でよく用いられるPsychophysics toolboxのGetSecs() 関数はmSecオーダーの精度を持っています。 -- (東方腐敗) 2008-12-30 19:42:25
初心者ですみません。 n次元マトリクスがあって、すべての要素の 和やすべての要素の中の最大値,最小値などを知りたいときには、 どのような関数を使えばいいのでしょうか? 以前、みたことがあるような気がするのですが、ヘルプ の中から探せませんでした。 よろしくお願いいたします。 -- (年の瀬) 2008-12-30 21:52:35
>年の瀬さん sum()やmax()で普通にいけます 例: A = rand(3,3,3,3)%4次元マトリックス % 和 sum(A(:)) %A(:)とすると全要素が一次元ベクトルになって出力される % 最大 max(A(:)) % 最小 min(A(:)) -- (まーぼ) 2009-01-07 14:36:10
最終更新:2015年11月19日 14:34