2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/10/03(土) 09:01:48
MATLAB 日本語版
http://www.cybernet.co.jp/matlab/
MATLAB 本家
http://www.mathworks.com/

Yahoo MATLAB
http://dir.yahoo.co.jp/Science/Mathematics/Software/MATLAB/
MATLAB入門
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm
MATLAB チュートリアル
http://www-isys.eei.metro-u.ac.jp/~sho/pub/ttmatlab/Index.html


前スレ
MATLABプログラミング 質問箱 その2
http://pc11.2ch.net/test/read.cgi/tech/1163125702/


2 :デフォルトの名無しさん:2009/10/03(土) 10:34:00
>>1
乙!

3 :デフォルトの名無しさん:2009/10/03(土) 11:40:00
Figureのエクスポートの設定で「図の端まで軸を拡張」というのがありますが、
これのオンオフをプログラムから変更するにはどの関数を使えばよいのでしょうか?

4 :デフォルトの名無しさん:2009/10/05(月) 10:24:52
DirectXはサポートしていますか?

5 :デフォルトの名無しさん:2009/10/06(火) 00:44:22
最近仕事で使う事になりそうなんですけど
これが何の役にたつのかわかりません。。普段Cプログラマなんですけど。
フリーの類似ソフトで自宅で勉強しようと思うのですが
オススメ教えてください

6 :デフォルトの名無しさん:2009/10/06(火) 04:02:14
octave

7 :デフォルトの名無しさん:2009/10/06(火) 12:01:47
Matlab超初心者です。
データのインポートについて教えてください。
355x165の行列データ(csv形式)をインポートウィザードを使って取り込もうとしているのですが、
なぜか353x165のデータしか取り込むことができません(最後の2行が取り除かれる)。

どうやったら全データを取り込めるでしょうか。
よろしくお願いします。

8 :デフォルトの名無しさん:2009/10/07(水) 04:34:50
load('filename')

9 :デフォルトの名無しさん:2009/10/08(木) 19:30:31
リアルタイムでビデオカメラから入力している映像を
90°,180°など指定した角度だけ変化させて映像を表示させるプログラミングを
教えてください。
よろしくお願いします。

10 :デフォルトの名無しさん:2009/10/09(金) 07:02:24
入力部分はできてるの?
それならあとは簡単だけど

11 :デフォルトの名無しさん:2009/10/09(金) 09:53:13
9です。
ただ表示させるだけ(0°)ならできています。

あとImage Processing ToolboxやImage Processing Toolboxなどを
積んでいますが使うのでしょうか?

12 :デフォルトの名無しさん:2009/10/09(金) 16:31:48
2次元の情報を3次元的に使える?

13 ::2009/10/09(金) 16:42:17
matlabに触れたことがないので何もわからない状態です・・・
上記の入力部分とありましたが、使い方もわからずただpreview()とか書いてパソコンに表示
させただけです・・・
1からプログラミング内容を書いてもらえないでしょうか?

14 :デフォルトの名無しさん:2009/10/10(土) 02:45:13
>>9
a <-これにイメージ情報が入っているとして、
a=a'
これで90度回転するよ

15 :デフォルトの名無しさん:2009/10/13(火) 07:13:58
棒状のものを表示したいのですが、どのプロットが最適でしょうか?

16 :デフォルトの名無しさん:2009/10/13(火) 19:45:50
wavファイル保存についてなんですが
ファイル名を(ファイル名)001〜ってどうやるんですか?
録音したものを連番で次々保存していきたいんですが

17 :デフォルトの名無しさん:2009/10/15(木) 00:58:29
>>16
初心者だけど、numに連番入れるとして

wavname = [ '(ファイル名)' num2str( num, '%03d' ) '.wav'];

こんなとか、

wavname = sprintf( '(ファイル名)%03d.wav', num);


こんな感じかな?

18 :デフォルトの名無しさん:2009/10/15(木) 12:53:05
Fortran-MEXプログラムについて質問。

サンプルプログラムのtimestwo.f
(参照)http://dl.cybernet.co.jp/matlab/support/manual/r14/toolbox/matlab/matlab_external/?/matlab/support/manual/r14/toolbox/matlab/matlab_external/ch_mex_i.shtml

   〜省略〜
if(nrhs .ne. 1) then
call mexErrMsgTxt('One input required.')
elseif(nlhs .ne. 1) then ←ここが変。(nlhs .gt. 1)ならスルーされる。
call mexErrMsgTxt('One output required.')
endif

   〜省略〜
call timestwo(y, x, nlhs)    ←nlhsの値を確認するため引数で渡す。
   〜省略〜

subroutine timestwo(y, x, nlhs)
integer nlhs
real*8 x, y
y = nlhs    ←nlhsを出力するようにする。
return
end

例の通りx=2として(意味はないけど)コマンドウィンドウでtimestwo(x)を実行すると
ans= -7.2877e+17 と出ます。原因が分かる方がいらっしゃれば、ご教示願います。

19 :デフォルトの名無しさん:2009/10/23(金) 07:01:02
do-whileってmatlabに無いの?

20 :デフォルトの名無しさん:2009/10/25(日) 10:23:20
マッチョラボだと入るのに勇気がいるよね( ・ω・)y─┛〜〜

21 :デフォルトの名無しさん:2009/10/27(火) 00:26:12
>>19
ttp://newsgroups.derkeiler.com/Archive/Comp/comp.soft-sys.matlab/2006-01/msg04384.html

22 :デフォルトの名無しさん:2009/10/28(水) 05:48:08
>>21
kwsk

23 :デフォルトの名無しさん:2009/10/28(水) 23:09:44
>>22

hi
one of the solutions:


t = true;
while t

t = some_condition;
end

24 :デフォルトの名無しさん:2009/11/03(火) 19:36:47
MATLAB R2009aを使っているのですが、たとえば

A=[1 3.5 5]; B=[-3 5.7 -5]; C=[4 4 8];

のようなプログラムを入力したとき、空白をタブキーで区切ると、空白の幅が一定にならないのが気持ち悪くって悩んでいます。
空白の幅を一定にするにはどうすればいいのでしょうか?

25 :デフォルトの名無しさん:2009/11/05(木) 07:58:07
タブとはそういうものだと思うが

26 :デフォルトの名無しさん:2009/11/06(金) 00:52:16
>>24
空白をスペースで入力すれば?

27 :デフォルトの名無しさん:2009/11/06(金) 12:05:08
初歩的な質問で申し訳ないんですが、
A=imread('test01.jpg');
で画像を取り込んで
image(A)
で表示するのはできたんですが、
表示された画像の任意の場所をクリックして、そのクリックされた座標を調べるにはどうしたらいいでしょうか?

やりたいことは、2点の点をクリックして座標を出し、その2点間の距離を求める ということです。

28 :デフォルトの名無しさん:2009/11/06(金) 16:12:25
>>27
ginput

29 :デフォルトの名無しさん:2009/11/09(月) 02:04:44
ランダムな行列から
○列目の値が△である行を全て抽出して
新たな行列を作るはどうしたらいいでしょうか?

誰か教えてください


30 :デフォルトの名無しさん:2009/11/09(月) 03:18:13
なんかR2009bにしてからしょっちゅう固まる…何故だろう

31 :デフォルトの名無しさん:2009/11/09(月) 09:50:47
> 29
ind = hogehoge(:,○)==△;
hogehoge2 = hogehoge(ind,:)


32 :デフォルトの名無しさん:2009/11/09(月) 10:25:12
>>31
findが必要なんじゃないの?

ind = find( hogehoge(:,○)==△);

33 :29:2009/11/09(月) 21:02:54
>>31-32
ありがとうございました
成功しました

34 :デフォルトの名無しさん:2009/11/11(水) 01:21:27
関数ではない波形、例えば地震波形などを積分したい場合は自前で台形公式
などを作って積分するしかありませんか?
trapez やquadは対象が関数の形になっているものしか無理っぽいのですが。
よろしくお願いします。

35 :デフォルトの名無しさん:2009/11/11(水) 05:45:03
そういう時系列データなら、
sum(data)*dt
じゃだめなの?

36 :デフォルトの名無しさん:2009/11/15(日) 13:06:49
xlswriteを使ったプログラムを作ってます。
動作自体は問題ないのですが、xlswriteを呼び出した回数だけプロセスにEXCEL.EXEが残ってしまいます。
正しくプロセスを終了させる工夫はあるのでしょうか??

37 :デフォルトの名無しさん:2009/11/15(日) 16:18:29
>>34
trapzでいけるはずだ。台形近似で定積分できる。
tはサンプリング時間、wはその時点での値。tは等間隔じゃなくってもいける。

 s = trapz( t,w );

38 :デフォルトの名無しさん:2009/11/15(日) 20:07:30
>>32
findいらないよ

39 :デフォルトの名無しさん:2009/11/16(月) 02:04:16
個人的覚え書き
秀丸で、matlabの' 'を文字定数にしたい場合
'.*'では
アポストロフィー演算子の扱いに困るので前方不一致を使って
(?<!\))'
だと(1 2)'とかを避けてうまくいくようだ。

40 :デフォルトの名無しさん:2009/11/17(火) 04:26:59
inputdlgから取得した文字列がanswerに格納されていると思うんですが
str2num(answer(1));
といった感じで文字列から数値に変換しようとすると
『文字列を入力してください』
といった類のエラーが出ます。
色々と試してみましたが解決できませんでした。
よろしければこの解決方、あるいは
この文字列を数値に変換する他のすべを教えて頂ければと思います。


41 :デフォルトの名無しさん:2009/11/17(火) 14:52:16
40ですが自己解決しました
inputdlgの戻り値がキャラ型じゃないというだけでした
こんな簡単なことにも気付かなかったなんて……
ググレカスな質問をしてしまい、申し訳ありませんでした


42 :デフォルトの名無しさん:2009/11/19(木) 15:03:19
(x,y)のような位置情報データをfigureにマップのように表示したいのですが、そのような方法はありますか?

43 :デフォルトの名無しさん:2009/11/19(木) 23:56:12
ありますよ

44 :デフォルトの名無しさん:2009/12/01(火) 23:22:40
マットラブ エックスポ 20009 行ってくるぜ

45 :デフォルトの名無しさん:2009/12/04(金) 10:37:50
mexファイルを使おうとしてコマンドプロンプトでmex -setupと打つと、
1にはlcc
2にはNone
となってしまってVC++が選択できません。
VC++はインストール済みです。何が問題なのでしょうか?

46 :デフォルトの名無しさん:2009/12/04(金) 11:30:31
>>45
そもそも普通にVCは使えているのですか?環境変数が設定されていないのでは?MSVCDirとかさ。

直接、VCをつかうようにするには

C:\Documents and Settings\(ログイン名)\Application Data\MathWorks\MATLAB\(リリースバージョン)

のフォルダーにmexopts.batがあるから、そこにVCの設定にすればよいはず。
最適化のオプションも設定後、自分でこのパラメータを変更すればよい。

47 :デフォルトの名無しさん:2009/12/04(金) 11:57:45
>>46
VC(2008)は普通に使えています。
matlabも普通に使えています。

MSVCDIRは設定されていませんでしたが、VS90COMNTOOLSが設定されていました。
MSVCDIRをユーザー/システム環境変数にC:\Program Files\Microsoft Visual Studio 9.0\VC\binと設定し、
setupを試しましたが現れませんでした。(再起動が必要?)

mexopts.batに関してはCompiler parametersの辺りを変更するということでしょうか?

ただ、環境変数のパスのあたりをどう設定してよいか・・・

48 :デフォルトの名無しさん:2009/12/04(金) 12:21:27
>>47
MATLABをインストールしたフォルダーにbin\win32\mexoptsがあって、そこに様々なコンパイラー用のバッチが用意されている訳で
それが、
C:\Documents and Settings\(ログイン名)\Application Data\MathWorks\MATLAB\(リリースバージョン)にコピーされているのだと思う。
だから、mexoptsフォルダーの中をみて、Microsoft Visual Studio 9.0用の物をマニュアルでコピーすればよいはず。

うちはMATLAB R7.1で止まっているので、ファイル名は不明だけど、過去のバージョンから類推するとmsvc90opts.batなのかな?
まあ何で表示されないのかわからんけど、Microsoft Visual Studio 9.0をサポートしていないのかな?

49 :デフォルトの名無しさん:2009/12/04(金) 12:42:37
>>48
こちらもmatlabは7.1でしたので、デフォルトではmsvc90opts.batはありませんでした。
ネットで探してみたところ本物かはわかりませんが見つけたので、
試したところコンパイルできるようになりました!

色々とありがとうございました。

50 :デフォルトの名無しさん:2009/12/05(土) 00:42:50
上の質問と少しカブるかもしれませんが、
Visual Studio9.0のVisual Studio2008で作ったC++ファイルを
MatlabR2006aでmexしようとしたら
「Could not find the compiler "cl" on the DOS path.
Use mex -setup to configure your environment properly.
C:\Program Files\MATLAB\R2006a\BIN\WIN32\MEX.PL: Error: Unable to locate compiler. 」
となるのですが、これはなぜでしょうか?
解決法を教えていただけませんか?

51 :デフォルトの名無しさん:2009/12/05(土) 09:25:10
>>50には来週から営業をやってもらおう

52 :デフォルトの名無しさん:2009/12/05(土) 11:27:22
>>50
お前の頭、機械以下じゃね?

53 :デフォルトの名無しさん:2009/12/08(火) 17:56:07
matファイルの中身(変数名やその値など)が全くわからないとき、
何かしらの方法で出力できませんか?
専用の閲覧エディタや出力するスクリプトなど・・・

54 :デフォルトの名無しさん:2009/12/08(火) 18:11:48
MATLAB 変数名でググった4つ目

55 :デフォルトの名無しさん:2009/12/10(木) 17:27:45
VC2008で作ったものをMatoabでMexしようとしたら、「windows.hが見つかりません」と出たので、パスを設定したつもりなのですができませんでした。
パスの設定方法は「ファイル→パスの設定」でやったのですが、やり方が違うのですか?

56 :デフォルトの名無しさん:2009/12/10(木) 17:59:06
windows.hなんて必要ないんじゃないの?

57 :デフォルトの名無しさん:2009/12/10(木) 18:22:00
説明少なくてすみません。
C++でDirectSoundで再生するものを作り、それをMexしようとしました。
そこでwindows.hをincludeしました

58 :デフォルトの名無しさん:2009/12/11(金) 12:37:03
maxで最大値を出すことはわかるんですが
最大値の位置を求めるにはどういうコマンドを使えばいいのでしょうか?

例えば
A=[2 52 5 9 20 32];
B=max(A)
B=52
ここで位置を求めるコマンドを使って
A(1,2)が最大値だということが知りたいわけです。

59 :デフォルトの名無しさん:2009/12/11(金) 13:17:00
maxのリファレンスを見ましょうね。

60 :デフォルトの名無しさん:2009/12/11(金) 16:55:24
[B,pos] = max(A)
でいいんじゃないの?

61 :デフォルトの名無しさん:2009/12/15(火) 01:11:52
mファイル内で音楽を再生させてから表示させる時、
a=100;
sound(S,fs);
a
とすると再生と同時に表示が行われてしまいます。
これを再生が終わった時に表示するようにしたいのですが、どうすればいいですか??

62 :デフォルトの名無しさん:2009/12/18(金) 00:59:11
matlab初心者です。初歩的なことかもしれませんが質問させてください。

カレントフォルダ内に100個のフォルダ(Folder_1〜Folder_100)があり、その中に1つずつファイルが入っています。
(Folder_1にはFile1、Folder_2にはFile2、.......)

これをfor文を使って、
Folder_1 で File1 を読み込んで描画して Folder_1 内に Picture2 という名前で保存、
Folder_2 で File2 を読み込んで描画して Folder_2 内に・・・・

というように Folder_1〜Folder_100について繰り返したいのですが、どうしたら良いのか分かりません。

63 :62:2009/12/18(金) 01:00:23
続きです

for i=1:100
 FolderName=sprintf('Folder_%d',i)・・・FolderName=Folder_i
 FileName=sprintf('File%d',i)
 PictureName=sprintf('Picture%d',i)
 cd FolderName・・・Folder_iフォルダに入る
 surf(FileName)・・・FileNameを描画する
 print -dbmp PictureName・・・PictureName.bmpで保存
 cd ..・・・元のフォルダに戻る
end

とすれば良いのかと思ったのですが、 
FolderName=sprintf('Folder%d',i)
cd FolderName 
の部分で、 ??? Name is nonexistent or not a directoryとなり、

PictureName=sprintf('Picture%d',i)
print -dbmp PictureName
では、PictureName.bmpという名前で保存されてしまいました。

やり方ご存じないでしょうか?

64 :デフォルトの名無しさん:2009/12/18(金) 02:01:00
>63
cd FolderName
だとFolderNameが変数じゃなくてリテラルとみなされるようで
cd(FolderName)
だと変数として扱われるようです。

65 :デフォルトの名無しさん:2009/12/18(金) 17:35:48
関数f(t)と時間反転した関数f(-t)の畳み込みって自己相関に等しいですよね?
matlab上で、
  conv(f(t),f(-t))  と xcorr(f(t))
が等しくならないのはなぜでしょうか?
また、この方法が間違ってる場合、f(t),f(-t)を用いて自己相関を表現する方法があれば教えていただけないでしょうか

66 :62:2009/12/19(土) 00:15:50
>>64
できました。
ありがとうございます!


67 :デフォルトの名無しさん:2009/12/19(土) 12:30:35
>>65
携帯からだから説明面倒だからしないけど、

とりあえずyahooで「MATLAB conv」で検索すれば法政の小林研究室の講義資料がトップに出てくるはずだから、それを読めば幸せになれるよ。

68 :デフォルトの名無しさん:2009/12/21(月) 15:50:35
>>67
自分の頭では同じと書いてあるようにしか読めませんでした……
自己相関の場合conv(f(t),f(-t))でいいと書いてるようですが……

69 :デフォルトの名無しさん:2009/12/21(月) 15:59:11
連投すいません
整数で試してみたら出来ました
今やってるのはデータが複素数なので、そのあたりに原因がありそうな気がします

70 :デフォルトの名無しさん:2009/12/26(土) 18:40:21
MATLABについて質問なんですが、
私が今回作ったプログラムにかなり大きいfor文がありまして、いざデバッグしてみると、エラーも吐かずちゃんと動いてるのですが明らかにおかしい結果が出てしまうのです:

そこで、MATLABにはブレークポイントという便利な機能があるって聞いて、使ってみたらとてもすばらしい機能でした^^;
しかし、行が多くなるにつれてクリックするのがめんどい…w だれかこれを一気に全行に設定できる機能orコマンド知りませんか?

私の環境はWindows XP Pro MATLABR2006aです;
どうかご教授くださいー!;

71 :デフォルトの名無しさん:2009/12/26(土) 18:54:51
>>70
教授ではないので教授できません。

72 :デフォルトの名無しさん:2009/12/27(日) 23:47:38
全行にブレークポイント入れたら今度はデバッグ時に
更なるクリック連打になって余計面倒な気が…


73 :デフォルトの名無しさん:2010/01/04(月) 13:44:31
ループごとにtest1、test2、test3...と変数の最後の数字を変更して変数を作りたいのですがどのようにすればいいのでしょうか?

74 :デフォルトの名無しさん:2010/01/04(月) 23:34:50
>>73
ループでカウントアップする変数と
'test'って文字列をくっつけてevalすれば良いと思うよ

75 :デフォルトの名無しさん:2010/01/05(火) 13:55:20
>>74
変数の中身をtest1...としたいのではなく、変数として宣言したいのですがそれもevalで可能ですか?

76 :デフォルトの名無しさん:2010/01/05(火) 14:36:47
>>75
やじうまです。変数をプログラム実行中につくるわけですよね。で
それは、何に使うのでしょうか?配列とかでは代用できないのでしょうか?

77 :デフォルトの名無しさん:2010/01/05(火) 18:58:59
>>76
配列でも代用は出来るのですが、すでに2次元配列になっていて3次元にするとややこしくなるかなと思いまして
使えれば便利だなと思ってる程度で、絶対に必要というわけではないですね、すいません

使い方としてはループごとに新しい変数に2次元配列を格納するといった感じでしょうか
1ループ目はtest1に、2ループ目はtest2に...といったイメージです

78 :デフォルトの名無しさん:2010/01/05(火) 19:44:23
>>77
「matlab eval」でぐぐって最初のところ(これ、マニュアルかな)にある例をみると
代入文のevalもできるみたいですね。

79 :デフォルトの名無しさん:2010/01/05(火) 22:07:44
>>77
それを文字列+ループナンバーで合成した新しい変数に
ぶっこむと、あとあとの処理を書くのが面倒くさくなる気がする。
変数名リストを作っておいて、まいどまいどeval、とか。
やたらと変数がとっ散らかって美しくないし。
3次元配列とか構造体でいいじゃない。

80 :デフォルトの名無しさん:2010/01/07(木) 16:58:05
randを使って乱数を発生させているのですが、プログラムを実行するたびに同じ乱数を発生させてしまいます
実行するたびに違う乱数を発生させたいのですがどうすればいいでしょうか?知恵をお借りしたいです

81 :デフォルトの名無しさん:2010/01/07(木) 22:43:38
>>80
会社じゃないとMATLABがないので確認できませんが
適当に検索したR13のマニュアルによると
「randは、実行するたびに異なる値を出力します。」
だそうです。
自分の記憶でも、そうなっていたような。

手元にあるFreeMat V3.6だと毎回違う出力になりますが、
なんの参考にもならないですね…

82 :デフォルトの名無しさん:2010/01/07(木) 22:47:13
>>80

83 :デフォルトの名無しさん:2010/01/07(木) 22:49:10
>>80

rand('state',0)で最初の状態にリセット
rand('state',j)でj番目の状態になる。
jを固定すれば、毎回、同じ一様乱数を発生する、だと思う。
乱数と言っても疑似乱数ですから、ある周期のどこかを取ってきているだけですので、こんな感じになるんだと思います。

84 :デフォルトの名無しさん:2010/01/08(金) 02:35:26
randのアルゴリズムってどうなってんの?

85 :80:2010/01/08(金) 16:40:07
rand('state',sum(100*clock));

と書くと毎回ランダムになると聞いたのでプログラムに追加してみたのですが、何も変わりませんでした
置く場所はrandを使う直前じゃないとダメとかそういう決まりがあるんですかね?
プログラムの内容が変わると違う乱数になるみたいですが、結局またその乱数で固定されてしまいます

86 :デフォルトの名無しさん:2010/01/08(金) 17:43:55
>>85

> rand('state',sum(100*clock));
これを最初に1回だけ実行すれば、時刻で初期化されて違う系列の乱数に
なりそうですけどね。
やっぱり、ことばで説明するよりソースをあげた方が解決が早いかも。

87 :80:2010/01/08(金) 18:01:12
rand('state',sum(100*clock)); の場所を変更したら毎回違う乱数を発生させてくれるようになりました
回答してくださった皆さんありがとうございました

88 :デフォルトの名無しさん:2010/01/20(水) 18:36:04
初歩的なことで申し訳ないですが、方法が上手く検索できなかったので質問させてもらいます

たとえば20個あるデータをAとして、その平均を取るときは
 mean(A)
でいいと思うのですが、
間の10番だけ飛ばして平均を取る、といったような事は出来るのでしょうか?
1〜9、11〜20を足して19で割り、平均したいのですが

89 :デフォルトの名無しさん:2010/01/22(金) 02:04:41
mean(A([1:9 11:20]))

こんな感じかもしれない

90 :デフォルトの名無しさん:2010/01/22(金) 17:08:15
>>89
やってみたら出来ました!
そんなところに括弧つければよかったんですね、知りませんでした

91 :デフォルトの名無しさん:2010/01/23(土) 12:22:26
質問です
Genetic Algorithm and Direct Search Toolboxで組合せ最適化問題を解きたいのですが、
整数であるという制約はどのようにしたらいいですか??
c<=0 ceq=0でしかできないのでどうしたらいいか困っています
よろしくお願いします

92 :デフォルトの名無しさん:2010/01/24(日) 23:46:23
最適レギュレータで質問です。
A=[1 0;2 -1]
b=[1;0]
c=[1 -1]
Q=[1 0;0 1]
r=1
設計したいのですが「lqr」を使ってプログラムを組んでみたのですがエラーが出てしまいます。
教えてください。お願いします。

93 :デフォルトの名無しさん:2010/01/30(土) 08:40:59
デフォルト値はどのファイルに書けばいいのか?

94 :デフォルトの名無しさん:2010/02/02(火) 13:00:33
配列の中の最大値はmaxで求まるのですが、
配列の中の最大値の場所を調べる関数と言うものはあるのでしょうか?
今はfor使って探していますが、関数としてありそうな気がしたので質問させてもらいました

95 :デフォルトの名無しさん:2010/02/02(火) 15:16:06
>>94
maxでできる
help maxで確認してください

96 :デフォルトの名無しさん:2010/02/02(火) 15:18:40
質問です
(x,y,R,G,B)のimageで扱えるようなデータがあり、
そのデータを(x,y)がある多角形の中に入るものだけプロットさせたい
と考えています
これって可能でしょうか

97 :デフォルトの名無しさん:2010/02/03(水) 15:26:27
>>94
>>58-60

98 :デフォルトの名無しさん:2010/02/04(木) 02:32:50
>>96
可能ですけど。

99 :デフォルトの名無しさん:2010/02/04(木) 16:12:52
>>97
一度されていた質問をしてしまって申し訳ない……
しかし助かりました、ありがとう

100 :デフォルトの名無しさん:2010/02/05(金) 19:06:49
>>98
そうですかー

101 :デフォルトの名無しさん:2010/02/07(日) 21:31:10
質問です.
行列を返す関数の要素にそのままアクセスする方法を誰かご存知でしょうか?
たとえば, size(A)の第2要素をアクセスするのに
S = size(A)
elem_2 = S(2)
といった書き方をもっと短い書き方(イメージで言うと (size(A))(2)のような表記 )
でやる方法ってありませんか?


102 :デフォルトの名無しさん:2010/02/08(月) 00:43:15
できません

103 :デフォルトの名無しさん:2010/02/08(月) 19:47:26
一部の関数では
elem_2 = size(A, 2)
のように書ける

104 :デフォルトの名無しさん:2010/02/08(月) 23:25:44
>>102, 103
ありがとうございます。基本無理だけど一部引数にとるものもあるんですね。

105 :デフォルトの名無しさん:2010/02/10(水) 01:31:23
matlab超初心者です。
1*1*512の変数を1*512の変数に置き換えるには
どうしたらいいんでしょうか?
ほんと初歩的な質問で申し訳ないです。

106 :デフォルトの名無しさん:2010/02/10(水) 03:12:26
reshape使えば出来るけど、次元変更はできたっけ?
1*512*1に変換できれば良いんじゃないの?

107 :デフォルトの名無しさん:2010/02/10(水) 18:52:14
>>106
ありがとうございます。
おかげでできました!

108 :デフォルトの名無しさん:2010/02/13(土) 12:16:06
フォントの大きさなどの標準の値って変更することができますか?
もしやり方があれば、教えてください。

109 :デフォルトの名無しさん:2010/02/16(火) 15:43:05
>>108
ttp://sach1o.blog80.fc2.com/blog-entry-82.html

110 :デフォルトの名無しさん:2010/02/27(土) 22:03:30
離散系のBode線図を描くと-180[deg]で折り返してくれない(-300degとかになる)です、何か解決法はありますか?

111 :デフォルトの名無しさん:2010/03/04(木) 15:22:42
入力信号をフィルタに通し出力するとき
出力波形の周波数振幅特性の図を出力したいのですが

y=filter(係数,入力信号)
X=fft(x);Y= fft(y)
LY=20*log10(abs(Y)/max(abs(X)));
plot(F,LY);

とするのですが、plotの所のFがなんなのかよくわからないのですが
わかる方がいらっしゃったら、ぜひご教授ください。

112 :デフォルトの名無しさん:2010/03/04(木) 15:37:48
周波数特性を描くのなら、X軸は周波数ではないかと

113 :デフォルトの名無しさん:2010/03/04(木) 15:39:14
>>110
-180より小さいものは360を足す、っていう1工夫をすればよいのでは

114 :デフォルトの名無しさん:2010/03/04(木) 15:55:52
>>112
アナログで0〜8000[Hz]までをプロットするというものなんですが
Fは周波数をそのまま入れればよいのか、それとも

F=0:8000;

と範囲を指定した方がいいのかどっちなのでしょう?

115 :デフォルトの名無しさん:2010/03/07(日) 12:26:23
FFTの結果に対応するFになりますよ

116 :デフォルトの名無しさん:2010/03/08(月) 14:15:58
MATLABで作った図をWordで読み込みたいんですが
どうセーブするのがいいのでしょう?

117 :デフォルトの名無しさん:2010/03/08(月) 19:52:02
emf

118 :デフォルトの名無しさん:2010/03/08(月) 21:28:32
epsも対応してるだろ
バージョンにもよるけど概ねeps最強

119 :デフォルトの名無しさん:2010/03/09(火) 17:33:37
emfのほうがキレイに印刷できるような気がするんだけど
それって俺だけ?

120 :デフォルトの名無しさん:2010/03/09(火) 22:51:57
線は太めのほうがきれいにみえるかも

121 :デフォルトの名無しさん:2010/03/15(月) 17:58:21
ある時系列の移動平均をとりたいのですが
どうやればいいのでしょうか?

122 :デフォルトの名無しさん:2010/03/15(月) 18:58:23
係数を定義してコンボルーションconvでおk

123 :デフォルトの名無しさん:2010/03/17(水) 00:56:05
質問です。
mfilt.cicinterpでノーマライズ(0dB)する方法が分かりません。

ちなみにmfilt.cicdecimではノーマライズができるのですが、
mfilt.cicinterpでは0dBにノーマライズすることができませんでした。
分かる方がおりましたらご教授お願い致します。

124 :デフォルトの名無しさん:2010/03/17(水) 16:30:18
>>122
端の処理が面倒じゃない?

125 :デフォルトの名無しさん:2010/03/17(水) 16:39:55
>>121
filterでもいいかも

126 :デフォルトの名無しさん:2010/03/17(水) 17:34:25
>>124
移動平均なんだからどんな場合でも端の処理は面倒

127 :デフォルトの名無しさん:2010/03/23(火) 11:44:02
行列のある要素の周囲から最小値を見つけそのインデックスを知りたいのですが、どうしたらいいでしょうか?
例えば、a22を中心としたらa11,a12,a13,a21,a23,a31,a32,a33の中から見つけるということです。

とりあえずfindやminを使えばよさそうだと思ったんですが分かりません

128 :デフォルトの名無しさん:2010/03/25(木) 17:24:43
端のことを考えないとすると

a22のまわりの9個の要素をreshapeして1行に入れる
[C,I] = min(A) で何番目が最小か分かる
indexに直す

でどう?


129 :デフォルトの名無しさん:2010/03/26(金) 10:00:10
minでいいんじゃないの?

130 :デフォルトの名無しさん:2010/03/27(土) 10:09:12
ちょっとかっこ悪いけど、これでできた
[x,y]=find(A=min(min(A)))


131 :デフォルトの名無しさん:2010/03/27(土) 10:28:56
>>130
min(min(A))は min(A( : ))でいいだろう。(:)でマトリックスを縦ベクトルにするからね。

132 :127:2010/03/27(土) 11:15:25
皆さんどうもです。
残念ながら>>127の考え方自体があまり有効な方法じゃなかったことが発覚してしまったのですが、
今後使うかもしれないので参考にさせていただきます。

133 :デフォルトの名無しさん:2010/04/04(日) 15:11:00
>>131
indexがいるのです

134 :デフォルトの名無しさん:2010/04/07(水) 23:52:02
四分値を調べるコマンドはありませんか?


135 :デフォルトの名無しさん:2010/04/10(土) 09:46:56
quartile.mっていうのでぐぐれ

136 :デフォルトの名無しさん:2010/04/21(水) 13:40:42
MATLAB2008をインストールしたら、無線LANでネット接続ができなくなっちゃった。
原因わかる方いますか?

137 :デフォルトの名無しさん:2010/04/21(水) 19:15:40
どういう設定なのかもわかんないのに、答えようがない


138 :デフォルトの名無しさん:2010/04/23(金) 00:30:40
2008なんて、どうして今頃インストールするんだよw

139 :デフォルトの名無しさん:2010/04/25(日) 01:31:30
GUIDEで、uigetfileを使って、csvデータを読み込むGUIを作ろうとしたのだが、
データをワークスペースに渡せず、消えてしまうのだが、なにかいい方法ないかな?

140 :139:2010/04/29(木) 01:27:38
すみません。
自己解決しました。
globalで宣言しておけばおkでした



141 :デフォルトの名無しさん:2010/04/30(金) 18:18:39
globalにしなくっても、引数で渡す手もあるよ

142 :デフォルトの名無しさん:2010/05/01(土) 03:05:20
function FileOpen_pushbutton_Callback(hObject, eventdata, handles)

[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl;*.csv','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';
'*.m', 'M-files (*.m)'; ...
'*.fig','Figures (*.fig)'; ...
'*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file');

global data1;
data1=importdata(filename);

こんな感じなのだが・・・
引数だとどうすればよい?

143 :デフォルトの名無しさん:2010/05/02(日) 15:30:19
普通の返り値がある関数と同じじゃないの?

144 :デフォルトの名無しさん:2010/05/05(水) 11:48:20
すみません、初心者です
質問させてください

for文(例えば x = 1:8)のなかで
末尾にその時のループの数字を付加した変数を使いたいのですが

x = 1 のとき y1
x = 2 のとき y2
...
x = 8 のとき y8
(↑のようにです)

xとyを使ってどのように記述すれば、思っているように
動作させられるでしょうか

145 :デフォルトの名無しさん:2010/05/11(火) 00:48:27
>>144
eval使えば出来るけど、
それよりもYを1つの構造体にして、

for x = 1:8
  [ y{x} を使った処理 ]
end

とすればやりたいこと実現できると思うよ。

146 :145:2010/05/11(火) 00:49:12
構造体じゃなくてセル配列だった。

147 :デフォルトの名無しさん:2010/05/11(火) 16:06:46
セル配列って、使ってて分かりにくくありません?
なんでも放り込めてしまうので、視認性の悪いスクリプトになるような気がします

自分はeval派ですね

148 :デフォルトの名無しさん:2010/05/11(火) 17:14:22
evalよりまし

149 :デフォルトの名無しさん:2010/05/12(水) 18:46:22
evalは慣れたら分かりやすいよ


150 :デフォルトの名無しさん:2010/05/13(木) 21:25:20
C/C++言語MEXファイルについての質問です。
スレ違いでしたらすみません。

MEXファルの作り方の解説は様々なサイトで見つけることができますが、
ほとんど全てMEXファイルの中で処理が閉じていて、
既存のC/C++ライブラリを呼ぶための方法がよくわかりません。
(もちろんmathworks社のドキュメントは探しました)

例えば
MATLAB Compiler チュートリアル(※pdfファイルです)
http://www.mathworks.jp/mason/tag/proxy.html?dataid=11817&fileid=56811
の「3.4 コンパイル」に説明が載っているのですが、これでは全然ダメで、
mathworks社のサイトも同様の説明でした。

Linux の場合は
http://www.edu.cs.kobe-u.ac.jp/~mori/Matlab/mexmemo.html
にありますが、windowsの場合、特にVC++についての情報を
知りたいと考えています。

すなわち、既にC/C++のライブラリがあり、それには手を加えることなく
呼び出すための方法ということになります。

どなたか解説しているサイトやサンプルソースなどご存知でしたら
教えていただけないでしょうか。

よろしくお願いします。

151 :デフォルトの名無しさん:2010/05/14(金) 20:03:27
アク禁なのでケータイから
mex foo.c bar.lib
こんな感じで答えになってる?
ヘルプのwritting s-functionsとかにwrapper s-functionsなんてのがあったと思うけど

152 :デフォルトの名無しさん:2010/05/16(日) 18:11:52
本家で解説あるじゃん

153 :デフォルトの名無しさん:2010/05/20(木) 20:25:22
音声の信号処理をしたいのですが、変なことでつまずいています
例えばなのですが、下を実行したときに結果のyは
1から-1の範囲に正規化されているかと思いますが
同じyをwavwriteしたファイルを、2ビットずつfreadした時のように
16ビットの量子化をした整数値として、直接yを得たいのです(正規化せずにshort型で)

f=400;
Fs=16000;
T=0.5;
t=0:1/Fs:T;
y=sin(2*pi*f*t)

色々検索してみましたが、それらしいものとして
int16(y)などとやってみても何故か全て0になっていたりで
解決できませんでした
分かる方いらっしゃいましたら助力いただけると幸いです

154 :デフォルトの名無しさん:2010/05/20(木) 20:26:11
>2ビット
2バイトの間違いでした、すみません

155 :デフォルトの名無しさん:2010/05/21(金) 21:11:52
>>153
int16(((2^(16-1))-1).*y)でよくない?
細かいとこはwavwriteしたもんと比べて確認してくれ。

ところで、今のmatぁbは
ouble以外の型でも普通に演算できるの?
Ver6 R12の頃なんだけど、
intのままだとエラーになったんだよね。
int8->doubleに変換->計算->int8に変換
とかやった記憶があるよ。
メモリの節約の意味しかなかった。

156 :デフォルトの名無しさん:2010/05/22(土) 22:45:46
mファイル用を秀丸で使いたいのですが、強調表示の設定ファイルありませんか?

157 :デフォルトの名無しさん:2010/05/28(金) 07:38:52
電子雲のようなものを表現する方法を教えてください。

158 :デフォルトの名無しさん:2010/05/28(金) 11:05:23
>>157
plot3
でもOpenDXとかの方がいいとおもうよ

159 :デフォルトの名無しさん:2010/05/28(金) 12:55:07
>>158
ありがとうございます
ちょっと試してみます

160 :デフォルトの名無しさん:2010/05/28(金) 17:07:15
>>158
plat3で'.'で表示してみましたが、どうも今市です。
具体的なコードを教えていただけませんか?

161 :デフォルトの名無しさん:2010/05/28(金) 17:21:57
自己解決しました。
ありがとうございました。


162 :デフォルトの名無しさん:2010/05/28(金) 18:58:14
plot3じゃ、雲のような表現は無理なんじゃない?


163 :デフォルトの名無しさん:2010/05/30(日) 14:03:27
ふぅ、やっとr2010aダウソ終わったぜ


164 :デフォルトの名無しさん:2010/06/02(水) 16:26:44
またアップグレードするのか、と思うと気が重いな

165 :デフォルトの名無しさん:2010/06/03(木) 17:36:49
地図って書かせることできますか?

166 :デフォルトの名無しさん:2010/06/03(木) 19:25:10
C言語におけるconst修飾子のように
変数の値の変更を禁止するような方法はありませんか?

167 :デフォルトの名無しさん:2010/06/03(木) 20:37:46
>>165
出来るよ

>>166
あるよ

168 :デフォルトの名無しさん:2010/06/05(土) 12:28:27
このプログラムが作れません!><;


二重ループを用いて、アスタリスク「*」でn段のピラミッドを作成・表示するプログラムを作成せよ.
(例) n=4 の場合
///*///
//***//
/*****/
*******

※二重ループはfor文を使って下さい。
スラッシュの部分は空白(スペース)です。
#include<stdio.h>

int main ( void )
{
....


169 :デフォルトの名無しさん:2010/06/05(土) 12:37:28
int n=4, i, j;
printf("n=");
scanf("%d%*c", &n);
for(i=0;i<n;i++){
  for(j=n-1-i;j>0;j--) printf("/");
  for(j=i*2+1;j>0;j--) printf("*");
  for(j=n-1-i;j>0;j--) printf("/");
  printf("\n");
}

170 :デフォルトの名無しさん:2010/06/05(土) 21:40:50
文字を含むcsvデータを読み込もうとしているのですが、うまく行列に格納する方法が分かりません。
色々と調べてみて、textscanを使うと言うことまでは分かったのですがそれ以上は分かりません・・・
とても基本的な質問で申し訳ありませんが、教えてもらえますでしょうか?

171 :デフォルトの名無しさん:2010/06/05(土) 22:51:10
すいません。
アスタリスクの問題の質問をしたものです。
書きこんで頂いたプログラムはnをいきなり4と定めていますよね。
そうではなくて…
nの値を実行画面で打ち込んでn段のピラミッドをつくるというプログラムにしたいんです。
あと("/")ではなくて(" ")にしてもう一回教えてもらえませんか?


172 :デフォルトの名無しさん:2010/06/06(日) 02:40:01
>>171
おまえバカだろ
基本からやり直せ

173 :デフォルトの名無しさん:2010/06/06(日) 03:13:04
fid = fopen('hoge.csv');
ss = textscan(fid,'%s%s','delimiter',',');
fclose(fid);
てして,ss{i}{j}でアクセス

174 :173:2010/06/06(日) 03:19:53
>>170
カンマ含む文字列があるなら,Excelみたく""でくくって
%qを使うといいぞ

175 :169:2010/06/06(日) 09:01:31
そうだな、スレ違い。

176 :デフォルトの名無しさん:2010/06/09(水) 21:09:03
MATABのSimukinkuを使ってOFDMのシミュレーションモデルを構築
したいのですが、何をすればいいのかさっぱりです。
基礎知識ってナニが必要ですか?フーリエやら微分方程式って習得
してなきゃまずいですか?

177 :デフォルトの名無しさん:2010/06/09(水) 22:24:00
豚に真珠、猫に小判という言葉が思い浮かんだ。

178 :デフォルトの名無しさん:2010/06/10(木) 03:07:49
>> 177
MATLABは人をバカにするきらいがある・・・
かく言う私はMATLABでバカになった.
バカな私でも使えるMATLABは素晴らしい.

>> 176
Simukinku(w
OFDM勉強すればフーリエ変換も勉強できるのでは.
常識だし,勉強するためのちょうどいいチャンスじゃないか.


179 :デフォルトの名無しさん:2010/06/16(水) 11:29:48
3Dのグラフ描写について教えてください。
真円度計の測定結果のような極座標系の三次元グラフを描きたいと思い、悪戦苦闘しています。
持っている情報としては45゜毎thetaの半径rと高さzがあります。
rを使ってカラーマップを作りたいのでmeshやsurfですと上手くいきませんでした。
海外にはpolar3dやpolarplot3dといった.mファイルがあったのですが
使い方がいけないのか上手く使いこなせなかったです。
極座標系の三次元グラフは不可能ですか?
何かやり方があれば教えてください。

180 :デフォルトの名無しさん:2010/06/16(水) 16:52:38
デカルト座標から極座標に変換すればいいだけのことでは?

181 :デフォルトの名無しさん:2010/06/17(木) 00:41:32
すでに極座標系なのですが。。。理解不足ですかね。
極座標系でz軸を使えるものはないですかね。

182 :デフォルトの名無しさん:2010/06/20(日) 22:26:47
初歩的な質問かもしれませんが、教えてもらえれば幸いです。
二値画像をモルフォロジーに基づくスケルトン化しました。
そのスケルトン化した画像を元の二値画像に戻すにはどのようにプログラムを組めばよいのでしょうか。
また、2次元での画像を極座標変換するにはどうすればよいでしょうか。
よろしくお願いします

183 :デフォルトの名無しさん:2010/06/24(木) 12:24:33
自分もよく理解できてないからだろうけど、このところ質問の意味が分からん。

184 :デフォルトの名無しさん:2010/06/26(土) 01:20:57
MATLABのコマンドのode45で運動方程式(微分方程式)Ax''+Bx'+Cx=Fを
解いています(xを求めている)。
運動方程式の入力(Fです)は1-cos(b)でbは時間の関数でb=20*tと
しています。tは時間です。

xはx1とx2からなるベクトルで、Fとx1とx2を同時に出力して
グラフを見比べたいのですが、横軸を時間tではなくbとします。
行列であるAやBやCにtは含まれていないのですが、時間tについて
何も変更せずにグラフを出力すると、Fとx1,x2の波形(振幅値など)が
ずれていました(モデル的に、x1やx2は変位なので入力Fが
大きいときは、x1とx2も大きくなる、つまり振幅の位置が
一致するはずです)。
この原因は横軸がb、つまり20*tなのに、時間tについて何も
変更しなかったからだと思うのですが、どの部分をどのように
変更すれば時間について変更(tではなく20*tにすれば
うまくいくと思います)でき、うまくいくでしょうか?

長くなりましたが、よろしくお願い致します。

185 :デフォルトの名無しさん:2010/06/27(日) 08:18:02
いえいえこちらこそ宜しく御願いします。

186 :デフォルトの名無しさん:2010/07/09(金) 02:45:15
あとは、お若い二人でごゆっくりと( ・ω・)y─┛〜〜

187 :184:2010/07/10(土) 12:31:13
自己解決できましたので失礼します。

188 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 13:04:48
うむ

189 :デフォルトの名無しさん:2010/07/20(火) 00:04:48
MATLABのプログラミングを使って、音を出すことをしています。
緊急で「小惑星探査機はやぶさ」のカプセルに使われたビーコン音を
作ることになったのですが
作り方が分かりません…。
1024Hzと2048Hzの矩形波が1秒ごとに繰り返していることは
ネットで分かったのですが…

MATLABのプログラミングで作成することは難しいかもしれないですが
よろしくお願いいたします。

45 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)