1 名前:デフォルトの名無しさん [2006/11/10(金) 11:28:22 ] MATLAB 日本語版 www.cybernet.co.jp/matlab/ MATLAB 本家 www.mathworks.com/ Yahoo MATLAB dir.yahoo.co.jp/Science/Mathematics/Software/MATLAB/ MATLAB入門 feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm MATLAB チュートリアル www-isys.eei.metro-u.ac.jp/~sho/pub/ttmatlab/Index.html
635 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 17:43:38 ] MATLABの大文字小文字の区別って、完全に可能なんだっけ?
636 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 05:07:36 ] >>634 でも、matlab 標準というと、例えば bankrupt company が bkrptcmpny みたいなかんじじゃない? これはひどいでしょ?実際は、ここまでひどくはないけど、 _ もなにもないし、まぁひどい。 >>635 ファイル名 == 関数名、だから windows では大文字小文字が区別つかない。 けど、pca という関数がある時に、Pca を作るようなセンスの人はいないだろぉと思うし、 このために、lowerCamel は絶対ダメ!っていうのはもったいない気がする。
637 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 05:18:56 ] >>634 ,635 で、 toolbox 作っている人をみると、関数名は、 lower_case みたいに書いている人が多いので、そちらが標準かと思ったら、 ttp://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-39683.html を見ると関数名が makeParabola みたいに lowerCamel になってたりするんだよね。 でも、やっぱりファイル名の問題で、lower_case にしようかと思ったとすると、 変数名も lower_case にしたくなってくるわけだけど、 ttp://www.mathworks.com/access/helpdesk/help/techdoc/ref/persistent.html とかみると変数名は lowerCamel だったりするんだよね。 今、リンクないけど、lower_case な関数名、変数名を使っているマニュアル例もあった。 というわけで、matlab 標準がどっちつかずなもんで、むきーという状況。
638 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 05:29:17 ] なんだか長くなって申し訳ないけど、 C も標準は、略称使いの _ もなしの lowercase と思っていいいと思うけど、 OpenCV とか OpenGL は lowerCamel を使っている。 個人的には lowerCamel を使いたいのだけれど、 ファイル名 == 関数名の所で悩んでいる。 関数名は lower_case のような形で書いて、変数名は lowerCamel ってアリなセンスなのかな? ところで、private 関数的なネスト関数の名前は最初に _ でも付けようか、 と思ったら matlab では変数、関数名の最初を _ にはできないのね。がっかり。
639 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 05:03:28 ] お前プログラム書くの遅いだろ
640 名前:デフォルトの名無しさん [2008/08/05(火) 13:46:17 ] >というわけで、matlab 標準がどっちつかずなもんで、むきーという状況。 で、個人的意見なのですが、基本的にはMATLABのユーザーは物理系の人で、プログラミングの専門家やほかの言語に詳しい人は少ないのでそういうリテラシは少し低めなのではないでしょうか? OpenCV とか OpenGLとかはC++の文化を意識してああいう風になっているんでしょうねぇ オブジェクト指向を基本的には出来ないとはいえ、一応matlabの関数名の文化は、Cからの影響なのを考えるとlowerCamelの記法は可なのではないでしょうか? > ところで、private 関数的なネスト関数 Lispでは「高階関数」と呼んでいるのでこれに合わせると良いのでは?
641 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:59:29 ] >>640 >lowerCamelの記法は可なのではないでしょうか? やっぱり問題は関数名なんだよね >Lispでは「高階関数」と呼んでいるので 高階関数ってラムダ関数ちゅうか関数ポインタを受け取ったり 返したりって関数でしょ?fminsearch みたいな。 ネスト関数ってのはこっちね。 ttp://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-39683.html
642 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 11:40:35 ] 速く走らせるには工夫が要るけど それほど大きなパッケージを作るわけでもなかったら、 書法は気にしなくてもいいのでは、って思う。 おれはそのレベルのユーザー。
643 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:02:31 ] z = (2*cos(x.)+1)(2*cos(y.)+1) のグラフを書きたいのですが、上記の式で エラー: 一致していないか、予期せぬ括弧か大括弧です。 とでます。x,yの値は x=-3:0.1:3; y=-3:0.1:3; このように設定しております。 どなたか教えてください。
644 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:35:46 ] すみません。.の意味を取り違えてました。
645 名前:デフォルトの名無しさん [2008/08/07(木) 12:05:48 ] 質問があります エクセルデータを読んでグラフにしたいのですが、ファイルネームが ABC-01.xls ABC-02.xls . . . ABC-09.xls と続くので、forを使って for I=1:9 data=xlsread('ABC-0'num2str(I)'.xls'); hold on plot(data) end としたいんです。 でも2行目にどうやっても忠告がでてしまいます。 文法うんぬん以前に考え方自体が間違ってるのでしょうか?
646 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 12:28:00 ] こんなシンプルなのに考え方もなんも無いって。単純に文法の問題。 「こう書けるだろう」と勘で書いたところがあるでしょ? そういうところが本当に正しいかどうかチェックしてけばいい。 help strings
647 名前:デフォルトの名無しさん [2008/08/07(木) 12:55:00 ] やっぱりそうですよね。 プログラム自体が始めてから数週間なのでグダグダです。 ありがとうございました
648 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:07:13 ] アイディアとしてはいい線いっているので、 あと少しだけ、知れば、サクサク作業できるようになると思う。
649 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 20:58:54 ] すいません、ぐぐっても情報が少なすぎたので質問させてください。 JMatLinkというJAVAとMatlabをつなげるツールをインストールしたいのですが、 www.held-mueller.de/JMatLink/install.html に書いてある通りにしても上手くいきません。 上のリンク先に書いてあるように, c:\WINDOWSにJMatLink.dll をコピーし, c:\JMatLinkでDos窓を開き、 %java TestGui と打ち込んだのですが, java.lang.NoClassDefFoundError というエラーが出てテストウインドウが開きません. OSはWindows XP, matlabのバージョンは7.3.0、 JAVAはjdk1.6.0_05を使用しています. どなたか、JMatLinkを使用している方がいましたら、 何が悪いのか教えて頂けないでしょうか。
650 名前:デフォルトの名無しさん [2008/08/07(木) 23:14:34 ] Matlab 2007bと、Viual Studio 2005の質問です。 既存のC++で作られたライブラリの関数をラップして (要は、mdlOutputs内で既存の関数をコールする)、 C++ MEX S-functionを作ろうとしています。 Visual C++ 2005上で作成/ビルドして、*.mexw32を作っているのですが、 simulink上でこれを実行しようとすると、 「無効なMEX-ファイル*****; 指定されたモジュールが見つかりません。」 というメッセージが出ます。 サイバネットが出している、C-MEX-S-ファンクションチュートリアル (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やらをリンクしているモジュールの コンパイルは、とても難しそうです。
651 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 23:25:33 ] >>647 >>646 に書いてあるように help strings すれば 必要なことが書いてるよ。 MATLABはちょっとクセがあるから他の言語を知ってる人が いろいろひっかかるポイントがあると思うけど ヘルプはけっこうちゃんとしてると思うから どんどんヘルプ読んでいけばすぐ覚えるよ。
652 名前:デフォルトの名無しさん [2008/08/07(木) 23:34:38 ] >>616 ezplotとかだと関数じたいを引数として渡してるよね。 無名関数が可能なのかは知らない(たぶん出来ない)。
653 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 23:50:55 ] help function_handle
654 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 01:53:14 ] 無名関数は知ってるけど、 その引数の数を調べられないか?ってのが大事なんじゃろ。 で、matlabの引数って function hoge(a,b,c) と書いてあっても hoge(a,b,c,d) と呼べるっちゃよべるし、呼び出しの時点になるまでわからないのでは富田
655 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:24:53 ] matlab.exe のオプションってどう見るの? --help でも matlab 起動するし。
656 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 06:02:13 ] >>654 >>652 に答えてるのにお前が知ってたらなんなんだよ。。 だいたい呼び出しの時点の引数の数を呼び出す前に知る方法があるわけないし。 何言ってるのかわからんが。 >>616 で書いてるのは定義にある引数の数だろ。だったらnargin。
657 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 05:55:31 ] [X,Y,Z] = peaks(30); surfc(X,Y,Z) で出る図を png で保存すると、 真っ黒画像が作られるのですが、 みなさんはきちんと保存できたりしますか? ぐぐってもだれも surf がおかしいとか言っていないようで。
658 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 06:18:21 ] GUIでエディットテキストを30個作り、これにあらかじめ定義しておいた15*2サイズの行列Aの 各成分を一つずつ表示しようとしてます。edit1=>A(1,1), edit2=>A(1,2), edit3=>A(2,1)という 具合にです。 set(handles.edit1,'string',num2str(A(1,1))); などとSet文を30個書くのは効率が悪いんで、簡潔に書く方法を探しています。とりあえずevalを 使えばいいのかと思い、 for i=1:30 if rem(i,2)==1 eval(['set(handles.edit' num2str(i) ',''string'','... 'num2str(A(' num2str(ceil(i/2)) ',1)));']); else eval(['set(handles.edit' num2str(i) ',''string'','... 'num2str(A(' num2str(2/i) ',2)));']); end end としてみましたが、「evalのインデックスはpositive integerかlogicalでないといけない」みたいな エラーが出てしまいます。何が悪いんでしょうか。あるいは、eval以外にもっと良い方法があれば 教えてもらえると助かります。
659 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 14:37:19 ] 別ディレクトリの関数を addpath せずに実行する方法ってないでしょうか? その関数を実行して、中で一連の addpath をさせたいのです。
660 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 14:41:36 ] >>658 とりあえず sprintf のほうが見やすそう。
661 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:55:16 ] >>657 オプションを設定
662 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:56:25 ] >>658 エラーの内容そのまま。 1行づつ、確認しろ。
663 名前:658 mailto:sage [2008/08/15(金) 16:53:11 ] レスくれた人達ありがとう。 うおお、下から3行目の num2str(2/i) は num2str(i/2) とすべきでしたね。evalの性質の理解不足 とか以前の問題でしたorz あと、sprintfを提案してくれた人もありがとう。これからいろいろ試してみます。
664 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 03:08:34 ] >>661 オプションって surf のオプション?どれ?
665 名前:658 mailto:sage [2008/08/16(土) 05:21:46 ] 昨日はどうも。もう一つだけ質問させて下さい。 >>658 とは逆のケースで、30個のエディットテキストにユーザーが入力した値を、15*2サイズの 行列Aとして格納することを考えています。 guideでエディットテキストを配置すると、対応するm-ファイルにCallback関数が30個自動的に 生成されるので、それぞれの下部に各行列成分への格納文を書けばいいわけですが、やはり非効率的 なので、もっと良い方法を探しています。 この場合、これら30個の自動生成された関数宣言文を削除し、evalなりfevalなりを使って、30個の 関数を変数を使ってまとめて定義するような文を手で打ってもいいんでしょうか? 確かこの手の、 「guideを経由しないでm-ファイルに直打ち」はNGのケースがある、と何かの本で見たことがある んですが。 あるいは、このような場合での常套手段が他にありましたら教えて下さい。
666 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 12:10:20 ] >>659 スクリプトでいいならrunでできるけど 関数を呼ぶにははそれと組合せて function handleを使うとかかな。 それかベタだけど wd=cd(dir); func; cd(wd); とか。
667 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 12:23:29 ] >>666 addpath をしたいだけなので、 スクリプトにして、run で呼べばよさそうですね。ありがとう。
668 名前:デフォルトの名無しさん [2008/08/17(日) 19:18:43 ] ランダムな行列の中から局所的な最大値とその座標を求めたいのですが、 何かいい方法がありますでしょうか? max関数を2回使うことで、大域的な最大値は求まるのですが。。 局所的な最大値を求めるアイデアがどうしても出てきません。。 お願いします。
669 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 23:01:34 ] >>668 大域的なmax値をNaNで置換して、複数回走らせる あるいは 元データを微分する
670 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 07:09:50 ] >>668 局所的な最大値って極大値でいいのか? いずれにしても「ランダムな行列」がどういうものであるかと 何を「局所的な最大値」と定義するかが決まらないと 答えられないのでは?
671 名前:668 [2008/08/18(月) 11:29:38 ] レスありがとうございます。 具体的に書くべきでした。 例えば、 1 4 6 8 4 6 4 5 1 9 0 7 4 0 9 4 1 6 4 7 5 9 0 2 とあった場合、3列目の9と4列目の2つの9、6列目の7が最大値(=極大値) と考えたときです。 お願いします。
672 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 22:10:41 ] 座標が整数値でない画像データを可視化したいんですが、どうやったらいいですか? データの形式としては(x, y)が座標、(R, G, B)が与えたい色として x y R G B 0.1 -1.1 10 20 30 0.5 0.3 112 30 11 -2.4 3.2 3 15 205 のようにn*5(nは行数)のベクトルデータとなっています。 これを穴があってもいいから通常の画像のように可視化したいんです。 点ごとにプロットする色を変えたらいいのかと思ったんですがうまくいかなくて
673 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 22:58:01 ] >>672 座標を例えば 1 - 128 に正規化して、I = zeros(128); 後は for ループで x = data(n,1); y = data(n,2); I(x,y,1) = data(n,3); I(x,y,2) = data(n,4); I(x,y,3) = data(n,5); とでも格納しなおして imshow するとかそういう単純な話だろ? >>671 matlab central れ。
674 名前:デフォルトの名無しさん [2008/08/19(火) 04:39:11 ] ある関数Fの最適化問題を解きたいんだけど、Fがゼロになった瞬間に 最適化を止めて次のことをさせたいような場合、どうしたらいいですか? 最適化にはNelder−Meadを使いたいので、Fminuncより Fminsearchを使いたいです。 Fの値は定義上0より小さくなることはないので、一度0がでてからさらに パラメター空間でサーチするのは単なる時間の無題です。 Fminsearchのコードがわかれば外にIF節をつけれてFの値が 0になったところで止めさせられるものの、どうしていいかわかりません。
675 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 07:27:11 ] A = [1 1 2 1 3 4 5 1 1 2 3 6] みたいなベクトルがあって、[1 2] のある位置を知るのに、 for ループを使わずにすむ方法ってありますか? matlab ならありそうな気がするのですが B = [0 1 0 0 0 0 0 0 1 0 0] が返ってほしい。
676 名前:672 mailto:sage [2008/08/19(火) 20:22:10 ] >>673 即レスありがとうございます ちなみに正規化ってどうやったらいいんでしょうか xの列でソート→代入、yの列でソート→代入じゃ効率悪すぎですよね 手早くやれる方法はありますか?
677 名前:デフォルトの名無しさん [2008/08/19(火) 21:11:55 ] 1から100の整数をランダムに並び替えるプログラムを教えてください!
678 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:27:19 ] >>677 宿題は自分でやれ
679 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:42:24 ] >>677 randperm >>676 ソート?なぜにソートが・・・・ low = [1 1]; high = [128 128]; [N, d] = size(data); % d == 5 mini = min(data(:,1:2), [], 1); maxi = max(data(:,1:2), [], 1); data(:, 1:2) = data(:,1:2) - repmat(mini, N, 1); % move min to 0 data(:, 1:2) = data(:,1:2) ./ repmat(maxi-mini, N, 1); % [0, 1] data(:, 1:2) = data(:, 1:2) .* repmat(high-low, N, 1); % [0, high-low] data(:, 1:2) = data(:, 1:2) + repmat(low, N, 1); % [low, high] data(:, 1:2) = fix(data(:, 1:2)); % int
680 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:50:49 ] すみません、どなたか>>665 が分かる方いらっしゃいますか? 本質的には、いかにしてCallBack関数をまとめて設定するか、ということだと思います。
681 名前:668 [2008/08/20(水) 14:53:04 ] >>673 matlab centralにあるということでしょうか? 探してみましたが、わかりませんでした。。 もしよければどれか教えてもらえないでしょうか? お願いします。
682 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:05:44 ] えー、なんで?極大値は英語にしたら extreme か extrema だよ? extrema.m
683 名前:668 [2008/08/20(水) 23:06:13 ] >>682 完全に見落としてました。。 これでいけそうです。 ありがとうございました!
684 名前:デフォルトの名無しさん [2008/08/21(木) 10:04:17 ] for文を使わないことはできますか? 2次関数(ax^2+bx+c)を入力にして、総あたりでa,b,cのパラメータを推定する、というようなことをやっています。 入力をf(x)として、-5<x<5の範囲を見てるのですが、コードは error=inf; for a=-10:1:10 for b=-10:1:10 for c=-10:1:10 for t=-5:0.1:5 e=(f(t)-(a*t*t+b*t+c))^2; if (error>e); error=e; end end end end end というような感じになってます。これをfor文を使わないでコロンを使った形式にできるものなのでしょうか? よろしくお願いします。
685 名前:デフォルトの名無しさん [2008/08/21(木) 10:07:19 ] すみません、間違えてタブを使ってしまったので投稿しなおします ****** for文を使わないことはできますか? 2次関数(ax^2+bx+c)を入力にして、総あたりでa,b,cのパラメータを推定する、というようなことをやっています。 入力をf(x)として、-5<x<5の範囲を見てるのですが、コードは error=inf; for a=-10:1:10 for b=-10:1:10 for c=-10:1:10 for t=-5:0.1:5 e=(f(t)-(a*t*t+b*t+c))^2; if (error>e); error=e; end end end end end というような感じになってます。これをfor文を使わないでコロンを使った形式にできるものなのでしょうか? よろしくお願いします。
686 名前:デフォルトの名無しさん [2008/08/21(木) 10:10:21 ] スペースもダメみたいですね…みにくくてすみません。 よろしくお願いします。
687 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:16:19 ] repmat を駆使して4次元配列にまでもっていけばきっとできる。 で、あとは min で argmin うけとる。
688 名前:684 [2008/08/21(木) 16:35:55 ] >>687 ご指摘いただいた方法でできました。 ありがとうございます。
689 名前:デフォルトの名無しさん [2008/08/21(木) 21:09:03 ] >>684 って行列の中身が一緒じゃないんでしょ? だったらrepmatじゃだめじゃね? ってか俺も今 for a=1:10 for b=1:5 kotae(a,b)=a+b end end って感じのやってるけど、これfor文じゃなくせるの?
690 名前:デフォルトの名無しさん [2008/08/22(金) 00:13:06 ] matlab centralで拾ったファイルを動かそうと思ったんですが、 「500の最大の再帰呼出の制限達しました。制限を変更するには、・・・」 となって動きませんでした。 制限を2000あたりまで変更しても同じ結果で。3000くらいになるとMatlabが 強制終了してしまいました。 これ何か対処法ないでしょうか。。??
691 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 02:39:48 ] mファイルの作成者に聞くべきじゃない? つか、少しは自分でk
692 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 02:56:10 ] >>689 なくせう。for 文使うとゲロのろいぞ matlab。
693 名前:デフォルトの名無しさん [2008/08/22(金) 09:31:00 ] コロンでできるの?
694 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 10:26:09 ] できる。 kotaeって10x5のマトリックスになるだろ?
695 名前:684 [2008/08/22(金) 17:33:09 ] >>689 meshgridというのを使うとてっとり早いです。 行列にして掛け算する、ということです。 687さんがおっしゃった通り、repmatを使ってもできます。 というか、repmatを使ってmeshgridが実装されてるようなイメージです。
696 名前:MATLAB初心者 [2008/08/23(土) 12:06:04 ] はじめまして。 MATLABをはじめたばかりの初心者なのですが、連番をつけるところで悩んでおります。 文字列の配列で0001、0002、..... 、9999のように整数で任意の桁数にしたいのですが うまい方法はありませんでしょうか? エクセルでやっていたときは、上記の場合であれば”000”という文字列と整数の値を結合し 左から4文字を切り出して使用しておりました。 MATLABでもエクセルでやっていたような力技でやるしかないのでしょうか? もしご存知の方がおりましたら、ご教示いただけませんでしょうか? よろしくお願いいたします。
697 名前:MATLAB初心者 [2008/08/23(土) 12:12:11 ] 申し訳ございません。 上記のレスで左から切り出していたというのは誤りで、右から切り出しておりました。
698 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:51:58 ] >>697 ttp://dl.cybernet.co.jp/matlab/support/manual/r13/toolbox/matlab/ref/?/matlab/support/manual/r13/toolbox/matlab/ref/sprintf.shtml
699 名前:MATLAB初心者 [2008/08/23(土) 15:46:04 ] >>698 ありがとうございます。 大変申し訳ございません。私には、このページではsprintfでたとえば”1”を”00001”と定義する方法が理解できませんでした。 整数を5桁で表して、それを文字型にnum2strか何かで文字列に変換するようなことができるということでしょうか? 私の思い付きではstrcatをつかって696に書いたような力技で書く以外に方法がわかりません。 お手数をおかけしますが、ご教示いただいたページのどれを使用すればよいか教えていただけませんでしょうか?
700 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 16:25:44 ] >>699 printf フォーマット でぐぐればいろいろ解説があるよ。 C言語が元だけど自由度がかなり高いから覚えとくとよい ↓とりあえず解決策 str=sprintf('%05d',i)
701 名前:MATLAB初心者 [2008/08/23(土) 16:35:09 ] >>700 取り合えずというか、そのものずばり私の欲しかった回答を書いていただいて、感謝の限りです。 お忙しい中、どうもありがとうございました。 これからも精進いたします。
702 名前:675 mailto:sage [2008/08/26(火) 03:23:35 ] A = [1 1 2 1 3 4 5 1 1 2 3 6] みたいなベクトルがあって、[1 2] のある位置を知るのに、 for ループを使わずにすむ方法ってありますか? matlab ならありそうな気がするのですが B = [0 1 0 0 0 0 0 0 1 0 0] が返ってほしい。
703 名前:デフォルトの名無しさん [2008/08/27(水) 10:05:55 ] findじゃだめ?
704 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:09:50 ] 俺の力じゃ5行が限界だった x=find(A==1); y=find(A==2)-1; z=intersect(x,y); B=zeros(1,length(A)); B(z)=1; もっと簡単なのきぼん
705 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:26:43 ] 面白そうなので参加 ((A(1:length(A)-1)+A(2:length(A))).*(A(1:length(A)-1)==1))==3 正の値で且つ後ろ一つは無視する前提 一般性があるかどうかは知らない
706 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:38:40 ] size(A)も使ってみよう
707 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 01:15:31 ] A(1:end-1)==1&A(2:end)==2 レベル低いなあ。 こんなのすらすっと出てこないってことは よっぽど効率悪いコード書いてるんだろうなお前ら。
708 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 01:40:14 ] 煽るのは構わんがそれ全部ゼロになるぞ
709 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 01:46:06 ] って1ズラしてるか スマン
710 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 09:07:52 ] MATLABの関数自体のコードを読んでみると 勉強になるんだけどな。
711 名前:デフォルトの名無しさん [2008/09/04(木) 13:25:51 ] 質問です。 MATLAB上で画像処理をする際に 画像のある画素(座標)を保存して さらにその保存した座標のx方向成分だけ読み出すには どういったコマンドを入力すればいいんですか?
712 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:42:08 ] >>711 まず入門サイトでも読んだ方がはやくね?ってかはやい
713 名前:デフォルトの名無しさん [2008/09/04(木) 16:05:56 ] 2008からオブジェクト指向が充実したみたいで、 それについて詳しく解説してある本を知っていたら 誰か紹介していただけないでしょうか。 よろしくお願いします
714 名前:デフォルトの名無しさん [2008/09/08(月) 12:56:09 ] 誰か、MATLAB(2007b)で3次元の楕円球体の描き方教えてください。
715 名前:デフォルトの名無しさん [2008/09/08(月) 18:24:34 ] 定義したい変数名を、文字列を使って定義することは可能なのでしょうか? 例えば、 Data1 = 1; Data2 = 2; ・ ・ ・ Data30 = 30; と30個の変数を定義したいとき、for文を使って定義することは可能でしょうか?
716 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:43:57 ] >>714 キーワードを英語でlookforするくらいはしようよ。 >>715 help eval
717 名前:デフォルトの名無しさん [2008/09/09(火) 11:36:43 ] はじめまして、今matlabの勉強をしている者です。 matlabのエディットウィンドウで、文字の挿入ってどうやるんですか? 現状では入力してある行に文字を挿入すると後ろの文字が消えてしまい、 全文入力し直しになってしまうのです、これをwordなどみたいに 文字を挿入したら、文が自動で後ろに移動してくれるようにできないですか? また、同様にスペースキーも文字間のスペースをあけてくれず 文字を消してしまうのですが?どうしたらいいですか? OSは vinelinux4 matalab v7.0.1 SP1です
718 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:12:45 ] MATLABっていうか キーボードのinsert
719 名前:デフォルトの名無しさん [2008/09/10(水) 13:58:00 ] GUIを作成して、 ボタンを押すとシミュレーションが実行するようにしたんですが、 GUIなしでコマンドから直接実行した場合だと160秒くらいで終わるのに、 なぜかGUIからだと260秒もかかるんですが、 なんでこんなにかかると思いますか? やってることはまったく変わらないですが・・・。
720 名前: 133.43.185.64 mailto:sage [2008/09/10(水) 21:20:24 ] >>719 全然見当がつかん。 プロファイラを実行した状態で GUI 経由でシミュレーションを行って、 時間のかかっている箇所を割り出してから相談してもらった方がよいと思われ。
721 名前:デフォルトの名無しさん [2008/09/11(木) 00:44:20 ] >>720 アドバイスありがとう。 実はこういう経験あまりしてなかったんで、 プロファイラとか使ったことなかったんです。 ちょっと調べて割り出してみます。
722 名前:初心者 [2008/09/11(木) 01:43:15 ] 非常に低レベルなことで申し訳ないのですが、 Cでいうポインタのような概念はMatlabにはないのでしょうか?
723 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:54:01 ] >>722 ないはずだよ wikipediaにも書いてある まあ、google codeとかmatlab centralで検索すれば 自作のポインタ関数出て来ても可笑しくないけど
724 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 02:15:40 ] >>722 デフォはポインタ 渡された変数を編集しようとした時点でコピーが始まる
725 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 06:15:09 ] >>722 何をしたいのかをはっきりさせて それをMATLABではどうやるのか、と考える方がいいよ。 他の言語のやり方をそのまま持って来ようとしても そうは行かない場合は多い。MATLABに限らず。
726 名前:デフォルトの名無しさん [2008/09/14(日) 02:33:41 ] 質問です。 例えば 3,6,4,5,2 4,15,7,5,3 6,4,4,7,3 のような行列があってノイズで15だけ値が大きい場合には、 それを周りの数字に近い値に矯正(たしか平滑?)するにはどうすればいいですか? 自分が知ってるやり方だと、ノイズも含め全ての成分が平均化されてしまいます。 どうにかノイズ以外はそのままの値で、ノイズ部分だけを周りの値に馴染ませたいんです。
727 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 02:59:50 ] 10はノイズ? 13はノイズ? 15を適当に5とかにしたら「馴染んだ」ことになるの? 自分が何をやりたいかをまずは具体的にする。 君以外にそれがわかる人はここにはいないよ。
728 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 07:57:32 ] 実験データの改竄捏造でもしたいのかなw
729 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:03:36 ] >>726 if ノイズ 平滑 else なにもしない
730 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 07:18:58 ] ああ
731 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 13:38:27 ] >>726 新しいやり方を考えればいいだけ。
732 名前:デフォルトの名無しさん [2008/09/17(水) 23:20:14 ] 質問です。 Cのプログラム等に記載するための離散時間系のデジタル1次ローパスフィルタを作るためにMATLABでフィルタの係数を求めようとしています。 そのためのプログラムとして、サンプリングインターバル=6ms、フィルタ周波数=10Hzとして、 omega = 2 * pi * 10 T = 1 / omega sys = tf(1, [T, 1]) [num, den] = tfdata(sys) [numd, dend] = c2dm(num, den, 0.006) として求めると、y[n] = 0.6859 * y[n-1] + (1 - 0.6859) * x[n]という式が求められます。 一方で、連続時間系の1次ローパスフィルタの伝達関数(サンプリングインターバル=6ms、フィルタ周波数=10Hz) G(s) = 1 / (1+Ts) を手計算でz変換を行い、離散系のローパスフィルタの式を求めると、(T = 1 / omega、omega = 2 * pi * 10) y[n] = 1 / (1+omega*0.006) * y[n-1] + (1 - 1 / (1+omega*0.006)) * x[n] となるため、値を代入すると、 y[n] = 0.7263 * y[n-1] + (1 – 0.7263) * x[n] となり、先ほどMATLAB関数から求めた式と乖離が出てきてしまいました。 そこで、有識者の方々にお聞きしたいのは 1.そもそも上記のデジタル1次ローパスフィルタの作り方は間違っているのか? 2.c2dm コマンドの中身がよくわからないが、これは計算誤差が出るようなものなのか? 3.離散系に変換したシステムのボード線図を見て特性を確認したいのだが、その場合 も連続系と同じく bode(numd, dend) でよいのか? 長文となってしまい、見にくくて申し訳ありませんがどなたか有識者の方がいらっしゃればご教授ください。
733 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 14:54:34 ] 簡単な計算ミスのような気もするのですが、、、
734 名前:デフォルトの名無しさん [2008/09/18(木) 22:11:28 ] >>733 と言いますと・・・?
735 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 22:13:54 ] 周波数とインターバル(周期)とで混乱していない? 間違いを探したいのなら、 他の数字の組み合わせにしてみて、計算してみるのはどうでしょう?