[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 09/22 10:39 / Filesize : 230 KB / Number-of Response : 899
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

MATLABプログラミング 質問箱 その2



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


617 名前:デフォルトの名無しさん [2008/07/24(木) 21:09:47 ]
関数自体ってどういう意味?引数の数はnarginだろ普通

618 名前:デフォルトの名無しさん [2008/07/24(木) 21:44:37 ]
>>617
>引数の数はnarginだろ普通
それはある関数呼び出しに関する引数の数だろ。

phpspot.org/blog/archives/2008/04/javascript_65.html
これで分かるかな?


619 名前:デフォルトの名無しさん [2008/07/24(木) 23:09:42 ]
無理じゃね?
matlab は数値演算はいいけど、そういう補助機能が弱いよな。
>関数自体はまだオブジェクト化されていないのでしょうか?
そんなことする気あるの?なんかで言ってた?

620 名前:デフォルトの名無しさん [2008/07/25(金) 02:27:23 ]
というか、MATLABをプログラム言語としてみるとこれ以上ダサい文法の言語は正直無いと言えると思う。
最初に行列を格好良く計算できる機構と入れたのは良いけど、やっぱり後で条件分岐やループが必要だと入れたあたりから破綻が始まっている

そこからは無計画と言うしかない文法の拡張が行われている
比較的最初に気づくものでも
関数作りたかったら別にmファイルを作ってそこに書かないといけないとか
関数は最後にendで括っても括らなくても良いとか
何故か決して使いやすいとは言えない関数名がC言語風とか
行列計算の書式しか無かった頃だけ直感的で利点があった、何故かインデックスが1から始まるとか

正直、簡潔な書式の行列計算+強力なplot機能+インタプリタですぐ結果が見える使いやすさなのだと思う
本当は文法関係は言語の進化に合わせて再設計が必要な時に来ているのだと思う。もう無理だけど…。
>>614
mlint関数で文法チェックとかどうでしょう?

621 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:50:46 ]
スライドバーのコールバックで処理するとき、
ドラッグが終わってバーの位置が確定した時だけ処理を行うことはできないでしょうか?

バーが変化するごとにいちいち変化してると重いですorz

622 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:20:46 ]
>>621
アルゴリズムの問題だと思う。
ちょっと考え直したら?

623 名前:MATLAB初心者 mailto:sage [2008/07/30(水) 00:02:55 ]
MATLABを使って
下記のようなニュートン法でα(ステップサイズ)を
適応的に求めるプログラムを作りたいのですが、
一向に分かりません。FORTRAN77を今まで使っていましたが
私のいる会社では、今年からMATLABになってしまったのです。
申し訳ありませんがこの掲示板をごらんになっておられる皆様
ご教授御願いいたします。
x(k+1)=x(k)−αinv(H(x(k)))g(x(k))
g(x(k))はf(x(k))の1次微分
H(x(k))はf(x(k))の2次微分


624 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 02:42:36 ]
宿題ぐらい自分でやろうぜ
つーか、ほとんどmatlab関係なくね?

625 名前:デフォルトの名無しさん [2008/07/30(水) 03:43:34 ]
FORTRANならわかるの?なのに matlab だとわからないの?



626 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 12:54:20 ]
アルゴリズムが分からないのなら
教科書を読め

627 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:23:53 ]
matlab の関数名、変数名は lower_case
のように小文字と _ を使っている人が多いようだけど、
なにか理由があるのかね?
なんとなくそういうスタイルのテキスト多いのかな?
datatool.com/downloads/matlab_style_guidelines.pdf
の人は変数名には lowerCamel を押しているようなんだけど。
#関数名は _ もなしの lowercase 押してるけど、これはないよな。よみづらい。

628 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:45:26 ]
matlab を起動すると勝手に IME が日本語入力モードになります。
matlab で日本語入力モードになる意味がわからないので、
止めたいのですが、何か手法はあるのでしょうか?

629 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:09:24 ]
ここのスレ、性格悪い低脳多いな。


630 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:49:10 ]
>>627
空白をあらわすのにlower caseを使う人がアメリカ流の人には多いと思う

631 名前:デフォルトの名無しさん [2008/07/31(木) 23:33:08 ]
matlabのmファイルからwavをsound関数を使って再生しているのだけど、
途中で止めることができない(;_;)。

途中で止めることはできないのでしょうか?

コードは以下
[y, Fs] = wavread('test.wav');
sound(y, Fs);

632 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 05:27:56 ]
>>630
lower_case と lowerCamel どっちがいいかなぁ・・・
lower_case は古い流行な気がしないでもないんですよね。
UNIX というか GNU C コーディングスタイル的な。

633 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 07:11:06 ]
>>631
最初から止めたい位置がわかっているのなら、
マトリックスの部分指定。
とにかく止めたいのなら、CTRL+C

634 名前:デフォルトの名無しさん [2008/08/02(土) 17:41:28 ]
>>632
JavaScriptなんかの場合は最初は自分で書いたライブラリは_で区切るなんて風習もあったけど
そのうちライブラリを自分で配る人達が出てきてそれが普及してからはlowerCamelとJavaScriptの言語の標準に従う様になった。

最初は遊びで書いた関数も、そのうち人に配る可能性が無いわけでもないし、MATLAB標準に黙って従うのが一応正しい姿勢となるのでは?


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です






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef