MATLABプログラミング 質問箱 その3at TECH
MATLABプログラミング 質問箱 その3 - 暇つぶし2ch2:デフォルトの名無しさん
09/10/03 10:34:00
>>1
乙!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

こんなとか、

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


こんな感じかな?

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

サンプルプログラムのtimestwo.f
(参照)URLリンク(dl.cybernet.co.jp)

   ~省略~
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:デフォルトの名無しさん
09/10/23 07:01:02
do-whileってmatlabに無いの?

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

21:デフォルトの名無しさん
09/10/27 00:26:12
>>19
URLリンク(newsgroups.derkeiler.com)

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

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

hi
one of the solutions:


t = true;
while t

t = some_condition;
end

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

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

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

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

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

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

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

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

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

誰か教えてください


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

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


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

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

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

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

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

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

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

 s = trapz( t,w );

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

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

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


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


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

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

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

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

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

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

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

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

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

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

50:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/05 09:25:10
>>50には来週から営業をやってもらおう

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

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

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

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

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

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

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

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

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

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

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

62:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/12/18 02:01:00
>63
cd FolderName
だとFolderNameが変数じゃなくてリテラルとみなされるようで
cd(FolderName)
だと変数として扱われるようです。

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

こんな感じかもしれない

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

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

92:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/30 08:40:59
デフォルト値はどのファイルに書けばいいのか?

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

109:デフォルトの名無しさん
10/02/16 15:43:05
>>108
URLリンク(sach1o.blog80.fc2.com)

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

111:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/04 15:37:48
周波数特性を描くのなら、X軸は周波数ではないかと

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

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

F=0:8000;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

でどう?


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

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


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

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

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

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


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

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

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


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

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

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



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

142:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/02 15:30:19
普通の返り値がある関数と同じじゃないの?

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

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

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

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

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

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

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

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

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

自分はeval派ですね

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

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


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

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

例えば
MATLAB Compiler チュートリアル(※pdfファイルです)
URLリンク(www.mathworks.jp)
の「3.4 コンパイル」に説明が載っているのですが、これでは全然ダメで、
mathworks社のサイトも同様の説明でした。

Linux の場合は
URLリンク(www.edu.cs.kobe-u.ac.jp)
にありますが、windowsの場合、特にVC++についての情報を
知りたいと考えています。

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

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

よろしくお願いします。

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

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

153:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/20 20:26:11
>2ビット
2バイトの間違いでした、すみません

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

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

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

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

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

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

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

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


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


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


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

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

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

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

>>166
あるよ

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


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

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

int main ( void )
{
....


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

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


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

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

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

175:169
10/06/06 09:01:31
そうだな、スレ違い。

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

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

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

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


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

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

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

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

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

184:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/27 08:18:02
いえいえこちらこそ宜しく御願いします。

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

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

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

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

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

190:デフォルトの名無しさん
10/09/19 20:37:28
[x,y]=meshgrid(-10:10:10);
z=exp(x.^2 + y.^2)*(x.^2 + y.^2)
とすると、
z =
1.0e+089 *
2.8904 1.4452 2.8904
0.0000 0.0000 0.0000
2.8904 1.4452 2.8904
となり、x=10,y=0の時と、x=0,y=10の時で計算結果が変わってしまいます。
しかし、
exp(10^2+0^2)*(10^2 + 0^2)と
exp(0^2+10^2)*(0^2 + 10^2)の答えは共に
2.6881e+045
となります。これは計算誤差の問題ですか?

191:デフォルトの名無しさん
10/09/21 02:40:32
>>189
ヒント
URLリンク(nis-ei.eng.hokudai.ac.jp)

192:デフォルトの名無しさん
10/09/21 02:59:21
>>190
z=exp(x.^2 + y.^2).*(x.^2 + y.^2)
でOK?

193:デフォルトの名無しさん
10/09/21 03:16:27
>>192
ありがとうございます。うまくいきました。
.*で要素単位の乗算を意味するということで、
もっと勉強します。

194:デフォルトの名無しさん
10/10/04 18:28:45
d = eig(A)
が、どのようなアルゴリズムで
固有値を出しているのかを知りたいのですが
公式にいっても載ってませんでした;

URLリンク(www.mathworks.com)
によると、
[V,D] = eig(A, B, flag)
の場合は、
flagでコレスキー分解かQZ アルゴリズムかのどちらかを選べるようです。
指定しない場合はコレスキー分解で固有値を求めると書いてあるので、
d = eig(A)
でもコレスキー分解で固有値を求めていると考えるのが妥当でしょうか。
もし、公式でこのことについて載っているところがあれば教えて下さい。

195:デフォルトの名無しさん
10/10/04 21:14:13
コレスキー分解が使える条件すら理解できてないみたいだけど、
そんな状態でアルゴリズム調べてどうすんの?

196:デフォルトの名無しさん
10/10/04 21:34:48
>>195
コレスキー分解が使える条件は
正定値対称だと思います

ただ単純に知りたいだけです。

英語でもいいのでどこか載っているところを
知っている方がいれば教えていただければと思います

197:デフォルトの名無しさん
10/10/05 00:31:25
>d = eig(A)
>でもコレスキー分解で固有値を求めていると考えるのが妥当でしょうか。

Aが実対称正定値:コレスキー分解
それ以外:QZ分解
って書いてあんじゃん
フラグが明示されない場合は実対称正定値かどうかを内部で判定してるんでしょ

198:デフォルトの名無しさん
10/10/05 00:34:11
URLリンク(matlab.izmiran.ru)

199:デフォルトの名無しさん
10/10/08 15:29:55
学生でmatlab初心者です。自分は64bitのPCを使用しているのですが、
mex-setupコマンドを打ったときコンパイラの選択肢が出てきません。
ネットで多少調べてみたところ、32bit版での方法しか見つかりませんでした。
64bit版でも使用可能なコンパイラはないでしょうか?
基本的な質問なのでしょうが、どなたかご教授お願い致します。

200:デフォルトの名無しさん
10/10/08 15:45:22
199です。OSを書き忘れてました。
windows7を使用してます。

201:デフォルトの名無しさん
10/10/08 20:44:44
正規ユーザならサポートに訊け

202:デフォルトの名無しさん
10/10/10 17:20:29
現在学士4年で修士に進学予定です.
StudentEditionを購入したのですが,インストール時に設定する卒業年は2011年でいいのでしょうか?
修士の二年を考えて2013年でしょうか?

203:デフォルトの名無しさん
10/10/10 19:11:53
だからサポートに聞けって

204:デフォルトの名無しさん
10/10/11 00:45:24
clear all
s=[1 9 1 1 1 ;
2 2 2 2 2 ;
3 2 1 3 8 ;
4 4 2 4 4 ;
5 1 5 5 5 ];
xdiv=2;
ydiv=2;
a1=1;
c1=1;
for j=1:2
for i=1:2
s(a1+(j-1)*ydiv:a1+j*ydiv,c1+(i-1)*xdiv:c1+i*xdiv)
end
end

初歩的ですみません,
上記のようにある行列を分割した後,
それぞれ出た行列を別々の変数にforループを使って格納したいのですが,
どのようにすればよろしいでしょうか?
上は5×5を3×3の4分割にしていますが,
今後は1600×1200に対して同様のプログラムを作成したいと思っています.

205:デフォルトの名無しさん
10/10/12 22:33:13
>>204

セル配列を使って、下から3行目を

t{i, j} = s(a1+(j-1)*ydiv:a1+j*ydiv,c1+(i-1)*xdiv:c1+i*xdiv);

とするか、あるいはevalを使って

eval(sprintf('t%02d%02d = s(a1+(j-1)*ydiv:a1+j*ydiv,c1+(i-1)*xdiv:c1+i*xdiv)', i, j));

とするとか。

206:デフォルトの名無しさん
10/10/13 13:59:38
>>205

ありがとうございますm○mできました!
なるほど,{}を使うとできるんですね

207:デフォルトの名無しさん
10/10/23 12:20:41
画像のサイズを端末上に表示する方法ってありますか?
サイズを変数として使いたいのでimfinfoではダメです

208:デフォルトの名無しさん
10/10/23 17:11:11
size関数しらないって本当にMatlab使いか?

209:デフォルトの名無しさん
10/10/23 22:20:42
行列のサイズではなくて画像の容量を表示させたいのです

210:デフォルトの名無しさん
10/10/25 04:09:33
画像のサイズってファイルサイズのこと?
それだったらdir関数で分かるけど。

a = dir('foo.jpg');
siz = a.bytes;

これでfoo.jpgっていうファイルのファイルサイズが
バイト単位でsizに保存される。

211:デフォルトの名無しさん
10/10/25 17:59:50
>>210
出来ました!
ありがとうございました

212:デフォルトの名無しさん
10/10/28 15:38:09
MATLAB-Simulinkについて質問させてください.
運動方程式をベースに現在モデルを作成しております.

ある入力変位に対する値を出力させるためにLook-up-tableを用いています.
添付画像のようなデータを読み込ませようとしています.
しかし,そのデータの中に不連続な値をとる部分があり(下図の5.5や-5.5と記してある箇所),
ここの値より大きな変異になると,出力する値が無限大になって出てしまいます.

どうしたら正しい値をとるようになるのでしょうか.
些細な情報でも結構ですので,手助け願います.
分かりづらい説明で大変恐縮ですが,ご存知の方おられましたらお願い致します.

URLリンク(2sen.dip.jp)

213:デフォルトの名無しさん
10/11/04 23:21:07
すごい単純な質問なんだけど、
5x5の行列AのA(1,2)とA(3,5)を表示したいときに
A([1,3], [2,5])ってやると(1,2),(1,5),(3,2),(3,5)が
表示されちゃうのってどうしたらいい?

5x5くらいじゃ手打ちでいいんだけど、もっと大きくなるとメンド臭くて

214:デフォルトの名無しさん
10/11/05 12:11:40
matlab初心者です、データの補間方法についてお尋ねしたいのですが
URLリンク(hccweb5.bai.ne.jp)
↑このような配列をこのように処理したいのですがどう書けばよいのでしょうか
宜しくお願いします

215:デフォルトの名無しさん
10/11/06 07:30:32
>>214

for文で各行に繰り返しinterp1を適用していくくらいしか思いつかない。

URLリンク(infoshako.sk.tsukuba.ac.jp)

216:デフォルトの名無しさん
10/11/07 14:07:37
>>213
k = [
1 3
2 5
3 4];
for n=1:size(k,2)
disp( A(k(n,1), k(n,2)) );
end

かなぁ。

217:デフォルトの名無しさん
10/11/10 18:56:40
一服してくる( ・ω・)y─┛~~

218:デフォルトの名無しさん
10/11/15 21:11:21
画像処理が終わった後にお知らせメールが携帯に届く様にしたいんですけど

Could not connect to SMTP host: smtp.live.com, port: 25;

このエラーが出ちゃいます(´・ω・`)
hotmailでもsmtpサーバあるみたいだから出来ると思ったんですけど
ダメなんですかね?
hotmailのsmtpサーバはsmtp.live.comで間違いないと思うのですが…。
2007b使ってます。

% mail settings
setpref( 'Internet', 'SMTP_Server', 'smtp.live.com');
setpref( 'Internet', 'SMTP_Username', 'hotmailのアドレス');
setpref( 'Internet', 'SMTP_Password', 'hotmailのパスワード');
setpref('Internet', 'E_mail', 'hotmailのアドレス');

%メールの送信
mail_to = '携帯のアドレス(ezweb)';
title = '件名';
mail_text = ['本文'];

sendmail(mail_to, title,mail_text)


219:デフォルトの名無しさん
10/11/18 18:42:06
ベクトル(1行の行列)

A=[ 3 5 2 4 7 6 ]

の成分をランダムに並べ替えるような関数ってありますか?
いろいろ調べてみたけど見つからない……

220:デフォルトの名無しさん
10/11/18 19:04:04
各要素は固定でってこと?

221:デフォルトの名無しさん
10/11/18 20:47:10
A=A(:,randperm(length(A)))

222:デフォルトの名無しさん
10/11/21 16:42:51
randpermなんてあったのか
いっつもn=ceil(N*rand(1,1))にしてた

223:デフォルトの名無しさん
10/11/24 20:32:18
あさってはマットラブエックスポ2010だぜ


224:デフォルトの名無しさん
10/11/26 19:44:15
ギロッポン行って来た
みんな高そうな服着てた(´・ω・`)



225:デフォルトの名無しさん
10/11/26 20:12:12
戦利品
URLリンク(imepita.jp)

226:デフォルトの名無しさん
10/11/26 21:19:20
去年は弁当だったのに今年はパンでがっかりんこ



227:デフォルトの名無しさん
10/11/28 10:06:20
EXPOなんて行ってたのしいのか?

228:デフォルトの名無しさん
10/12/03 13:19:16
質問です。
C#でデータをDOS画面に出力します。
このデータをMATLABで取得することは可能でしょうか?
データはダダ流し状態なのですべて拾いたいです。
 
 
またはC#のデータをリアルタイムにMATLABで取得することは可能でしょうか?
パイプを使用し同じファイルにアクセスする方法は試したのですが値が取得できませんでした。
 
よろしくお願いします

229:デフォルトの名無しさん
10/12/07 14:05:09
MATLABである行列を作りたいんだけどプログラムが上手くいかない
誰か教えてください
行列Fを作りたいM*(M-1)/2行M列の行列

でm=1~M-1、r=m+1~M、p=1~M それぞれ正の整数
M=5でやってる
Fの要素の指定の仕方が
F((r-m)+(m-1)*(M-m/2)、p)

要素の値なんだけど
-1 if p=m-1
1 if p=r-1
pi*(m-r) if p=M
0 otherwise



230:229
10/12/07 14:09:29
スパース行列になるはずなんですけど

今のやり方はones()で同じサイズの行列作って条件に合うように要素を書き換えようとしてます。
for文でm,r,pを書いて、if文を条件に使ってるけど上手くいきません。
いいやり方などあったら教えてください
もしプログラム載せた方がいいなら載せます。


231:デフォルトの名無しさん
10/12/07 20:37:58
MATLABはパイプに対応していますか?

232:デフォルトの名無しさん
10/12/07 21:25:27
>>229
日本語でおk

233:デフォルトの名無しさん
10/12/08 01:14:58
>>229
こういうこと?

M = 5;
row = [];
col = [];
val = [];
for p = 1:M
  for m = 1:(M-1)
    for r = (m+1):M
      i = (r-m)+(m-1)*(M-m/2);
      j = p;
      if p == m-1
    row = [row i]; col = [col j]; val = [val -1];
      elseif p == r-1
    row = [row i]; col = [col j]; val = [val 1];
      elseif p == M
    row = [row i]; col = [col j]; val = [val pi*(m-r)];
      end
    end
  end
end
A = sparse(row, col, val, M*(M-1)/2, M);
spy(A);

234:デフォルトの名無しさん
10/12/09 22:48:20
失礼します。
初歩的な質問で申し訳ないのですが、
GUIのボタングループについてです

GUIDEを用いて、ボタングループ( Tag : uipanel6 )を作成し
その中にラジオボタン( Tag : radiobotton1, radiobutton2, radiobutton3 )を三つ配置しました

ラジオボタンでは、どのボタンを選んでいるかによって
ある変数の値を変えたいと考えているのですが
次のような関数を作っても上手く動いてくれません
----------------------------
function uipael6_SelectionChangeFcn(hObject, eventdata, handles)

test = 1

switch get(eventdata.NewValue, 'Tag')
case 'radiobutton1'
handles.shift = 10
case 'radiobutton2'
handles.shift = 30
otherwise
handles.shift = 50
end

guidata(hObject, handles);
--------------------------------
そもそも、ラジオボタンをどれか選択した時にも
test = 1 の部分がコマンドラインに出てないので
SelectionChangeFcn自体が反応してないようです
なにか他に必要なものがあるのでしょうか
分かる方がいらっしゃったら教えていただけると助かります
よろしくお願いします

235:デフォルトの名無しさん
10/12/09 22:49:54
失礼します
初歩的な質問で申し訳ないのですが、
GUIのボタングループについてです

GUIDEを用いて、ボタングループ( Tag : uipanel6 )を作成し
その中にラジオボタン( Tag : radiobotton1, radiobutton2, radiobutton3 )を三つ配置しました

ラジオボタンでは、どのボタンを選んでいるかによって
ある変数の値を変えたいと考えているのですが
次のような関数を作っても上手く動いてくれません
----------------------------
function uipael6_SelectionChangeFcn(hObject, eventdata, handles)

test = 1

switch get(eventdata.NewValue, 'Tag')
case 'radiobutton1'
handles.shift = 10
case 'radiobutton2'
handles.shift = 30
otherwise
handles.shift = 50
end

guidata(hObject, handles);
--------------------------------
そもそも、ラジオボタンをどれか選択した時にも
test = 1 の部分がコマンドラインに出てないので
SelectionChangeFcn自体が反応してないようです
なにか他に必要なものがあるのでしょうか
分かる方がいらっしゃったら教えていただけると助かります
よろしくお願いします

236:デフォルトの名無しさん
10/12/09 22:52:10
すみません、書き込み失敗とでて連投になってしまいました
お目汚し申し訳ないです

237:デフォルトの名無しさん
10/12/10 22:44:36
なんとか自己解決できました
やはり英語の解説でも
嫌がらずにちゃんと読まないといけないと思わされました
では失礼しました

238:デフォルトの名無しさん
10/12/19 17:59:16
M-ファイルを編集するときのショートカットで、
emacsでいうところの"Ctrl-l" (カーソルを中央に持ってくる) に
相当するようなショートカットは存在しますか?

239:デフォルトの名無しさん
10/12/20 10:47:32
octaveでもmexが動くんでしょうか

240:デフォルトの名無しさん
10/12/20 11:38:56
ggrks

241:デフォルトの名無しさん
10/12/21 11:50:59
昔Cのプログラムをmatlabから利用するにはmexしかなかったのですが
最近は、もっと便利なものがあったりするんでしょうか?
どこかのサイトでclassをそのまま読み込む方法見た気がするんですが

242:デフォルトの名無しさん
10/12/21 17:28:20
ggrks

243:デフォルトの名無しさん
10/12/30 11:04:50
はじめまして。matlab初心者です。

下のプログラムは、要素数の異なる2次元配列a,bのすべての要素同志の距離を計算して、
もっとも小さい距離をmindistに入れて、その配列番号をi,jに保存するプログラムです。

mindist = 1;

for i=1:length(a)
for j=1:length(b)

if mindist > sqrt((a(1,i)-b(1,j)).^2 + (a(2,i)-b(2,j)).^2)
mindist = sqrt((a(1,i)-b(1,j)).^2 + (a(2,i)-b(2,j)).^2);
ind_i = i;
ind_j = j;
end

end
end

これをfor文を使わない形にした方が、高速化できると聞いたのですが、
変形の方法が分かりません。どうか、ご教授下さい。何卒よろしくお願い致します。

244:デフォルトの名無しさん
10/12/30 11:35:10
min(sqrt(a.^2+b.^2))
.^2ってのは要素の2乗のこと。

245:デフォルトの名無しさん
10/12/30 11:36:21
sqrtは外に出したほうがさらに計算量減るね
mindist = sqrt( min(a.^2+b.^2) )

246:デフォルトの名無しさん
10/12/30 11:41:09
和をとるのを忘れてた
sqrt(min(sum( a.^2+b.^2 )))

247:243
10/12/30 11:48:39
>>246
aとbの要素数が異なるのですが、大丈夫なのでしょうか?
あと、a.^2、b.^2だとそれぞれのスカラを求めることになるので、
aとbの距離の計算にはなっていないと思うのですが。。。

248:デフォルトの名無しさん
10/12/30 12:17:30
全然勘違いしてたね。申し訳。
全ての組み合わせから最小距離を探すには2重ループしかないと思う
for使わなくて出来るって言った人に訊いてみたらいいんじゃね?

249:243
10/12/30 13:09:05
>>248
遅くなりましたが、ご回答ありがとうございました。
URLリンク(www.mag.keio.ac.jp)
に、forループを使わない方法が書いてあります。
しかし、理解できません。。。

250:デフォルトの名無しさん
10/12/30 15:51:22
>>249のリンク先の話は
数百個のスカラデータの中から最小を探す話だから
2つの行列のすべての組み合わせに対する演算の話ではないな

251:243
10/12/30 19:01:30
>>250
やはりforループを使わないとダメなんですね。
ありがとうございました。

252:デフォルトの名無しさん
10/12/30 19:20:28
>>243
こういう風に変形してループを1段に減らしてみるのはどうだろう。

mindist = 2;
for i=1:length(a)
[val, j] = min((a(1,i)-b(1,:)).^2 + (a(2,i)-b(2,:)).^2);
if mindist > val
mindist = val;
ind_i = i;
ind_j = j;
end
end
mindist = sqrt(mindist);

a を2行4000列、b を2行400列として比較すると変形前は56.8秒、変形後は0.218秒だった。
ループ回数は少ないほうがいいので、a と b のサイズを入れ替えて
a を2行400列、b を2行4000列として比較すると変形前は56.4秒、変形後は0.0312秒だった。

変形のポイントは、スカラ変数とベクトル変数の減算を行っていることと min の使い方。
x をスカラ変数、y を n 次元の行ベクトル変数とすると、x-y は [x-y(1), x-y(2), ..., x-y(n)] に等しい。
min は引数にベクトルを与えると最小値に加えて最小値の位置(インデックス)も返してくれる。

ループよりも行列演算として書くほうが速いというのはMATLABで一般的に言えることで、
常にこの点を意識してプログラムを書くとよいと思う。


253:243
10/12/31 09:06:20
>>252
この方法は全く想像できなかったです。
コードまで組んでいただき、大変丁寧なご解説ありがとうございました!
かなり処理時間が短縮できたので、できることの幅が広がりました。
感謝しております。

254:デフォルトの名無しさん
10/12/31 22:19:47
>>252さんの例のように、なんでも行列演算にもっていくテクニック
について特にかれたサイトや本はありますでしょうか?
本家にあるTips等は読みました。

255:デフォルトの名無しさん
11/01/01 12:45:29
流れぶったぎってすみません。
自分のPCにインストールしているMATLABの、使用可能なツールボックスが何か
分からなくなりました。
確認する方法ご存じないでしょうか?

256:デフォルトの名無しさん
11/01/01 14:37:12
ver って打ってみろ

257:デフォルトの名無しさん
11/01/01 17:47:17
そもそもmatlabってCとかで組む前にさくっと動作確認をするための物じゃないの?
matlabで高速化頑張っても誰も褒めてくれないでしょ

258:デフォルトの名無しさん
11/01/01 19:29:11
お前がそう思うんならそうなんだろう、お前ん中ではな

259:デフォルトの名無しさん
11/01/04 12:55:48
質問です

matlabで理論値を出そうとしているのですが、そこで畳み込み符号を使用します
何度かやってみてはいるのですが、どうもうまくいきません
理論値を出す際に使用する畳み込み符号は、どのように書けばいいのでしょうか?

260:デフォルトの名無しさん
11/01/04 21:10:58
>>259
何の理論値なのかもっと説明しないと、自分の同業者にしか話が通じないよ。

261:デフォルトの名無しさん
11/01/04 21:14:12
>>260

dBの値を変化させて、そのBERを出すプログラムに組み込みたいのですが、
よく組み込み式と場所がわからず苦戦しています

262:デフォルトの名無しさん
11/01/04 21:43:57
ここはscilabの質問もおkでしょうか?
ちょっとforループと3次元プロットで詰まってるんですが、
MATLABとscilabはそこらへん同じなのかなあ…

263:デフォルトの名無しさん
11/01/04 22:53:24
>>261
もう君は知らん。

264:デフォルトの名無しさん
11/01/04 23:15:22
プロット関連は実装が全然違うからアテにならないと思うよ
MATLABとOctaveですら同じコマンドでも同じ描画出来ないから

265:デフォルトの名無しさん
11/01/04 23:24:41
>>264
そうですか…
一応コードとか載せたりしてもいいですか?

266:デフォルトの名無しさん
11/01/05 01:23:23
コード載せてから聞いた方が早いだろ。

>>264
FreeMatだと描画関係でもそこそこ互換性あるぞ。

267:デフォルトの名無しさん
11/01/05 01:27:40
コード載せます
//サンプル点データ読み込む
Sheets = readxls~
s1=Sheets(1);
w=s1(5,:);
x1=s1(1,:);
x2=s1(2,:);
r=s1(4,:);
//サンプル点の最大値・最小値
x1max=max(x1)+1;
x1min=min(x1)-1;
x2max=max(x2)+1;
x2min=min(x2)-1;

//サンプル点の数
xa=length(x1);

xx1= x1min:0.1:x1max; //サンプル点の上限下限、間隔
xx2= x2min:0.1:x2max;
//ガウス関数の重ね合わせ
f=0;
for k=1:xa
for i =1:length(xx1)
for j =1:length(xx2)
f(k,i,j)=f+w(k)*exp(-(((i-x1(k))^2)+((j-x2(k))^2))/r(k)^2);
end
end
end
//グラフ作成
plot3d(xx1,xx2,f);

これでやると部分行列は正しくない定義ですって言われます

268:デフォルトの名無しさん
11/01/05 01:32:37
改行ひっかかった
エラー出るのはf(k,i,j)のところです
ガウス関数をサンプル点ごとに作っていってそれの重ねあわせで曲線を作る、という作業をしたいです

読み込みミスなどはいろいろ検証しましたが大丈夫でした
w(k)やx1(k)なんかに実際の数値をそのまま代入して3次元プロットしてもみたんですが
点が出たりするだけで思ったグラフを描いてくれないので、
多分fのところの記述の仕方が悪いと思ってるんですが…どう直せばいいか分からないです

269:デフォルトの名無しさん
11/01/05 02:11:55
scilabしらないけど、xx1とxx2がベクトルなのにfがテンソルだからエラーなんじゃない?

270:デフォルトの名無しさん
11/01/05 09:42:09
>>269
テンソルって何?と思って調べたら線形的とかそういうことか
ベクトルや配列で描くxとyの範囲を決めるのはscilabとoctaveだけなんですかね
MATLABは範囲さえ決めたら自動的になめらかに描いてくれるんですか?
これ以外にもxx1とxx2を行列にして計算する方法もあるんだけど
それだと不正な型:正方行列を想定しますって出てしまうんです…
fを足し合わせとかじゃなくxx1*cos(xx2)とかにしたらちゃんと描くので
読み込んだ点を使う事か、forで足し合わせる事が原因なのかなと思ってるんですが…

271:デフォルトの名無しさん
11/01/06 01:35:59
f(k,i,j)はスカラーだけど、その後のfってなにを指してんの?
このfor文をそのまま解釈すると、テンソルの1要素f(k,i,j)にテンソルfそのものを足してるからそらエラーになるなって思うが。
fの宣言はf=0ではなく、f=zeros(xa, length(xx1), length(xx2))であるような気もするし。
その後のplot3dでもxx1とxx2はベクトル、fは3階のテンソルだからエラーになるのは当たり前に思えるけど、scilabではそういう入力が可能なの?

272:デフォルトの名無しさん
11/01/06 12:12:29
>>271
forで繰り返しているのでfっていうのは前の段階のf(k,i,j)を想定しているんですけどこれじゃダメみたいですね
もうひとつ試した方法のコード書きます
xx1とxx2の宣言まで同じで、
//長さを合わせる
xx1mat=xx1'*ones(1,length(xx2));
xx2mat=ones(length(xx1),1)*xx2;
//ガウス関数の重ね合わせ
f=0;
for i=1:xa
f=f+w(i)*exp(-(((xx1mat-x1(i))^2)+((xx2mat-x2(i))^2))/r(i)^2);
end

これだと不正な型:正方行列を想定しますとエラーが出ます


273:デフォルトの名無しさん
11/01/06 12:24:46
自分がやりたい事は
1.エクセルから各点の座標データと重み・半径を読み込む
2.点の最大値と最小値からグラフを書く範囲を決める
3.f=0から始めて各点ごとにグラフの範囲にガウス関数を描く
4.全部の点のガウス関数を足すことで一つの多峰性関数が描ける

scilabだとxとyの範囲はベクトルや配列で決めるような感じなんですが
MATLABだとどういう感じに決めるんですか?

f=0;
for i=1:xa
f=f+w(i)*exp(-(((X-x1(i))^2)+((Y-x2(i))^2))/r(i)^2);
end

plot3d(X[Xの範囲],Y[Yの範囲],f)みたいな感じにすれば描いてくれるんでしょうか
先輩が使ってるmathematicaだとそんな感じなんですけど

274:デフォルトの名無しさん
11/01/06 19:51:04
2次元のカーネル密度推定がやりたいのでいいんかね
なら↓を使ってみたらどう
URLリンク(www.mathworks.com)

275:デフォルトの名無しさん
11/01/07 00:27:02
URLリンク(user.numazu-ct.ac.jp)
ここの「変数を 2 つ持つ 3 次元グラフ」の項に MATLAB と Scilab の3次元プロットの違いが書かれている。
3次元プロット関数の第3引数は MATLAB でも Scilab でも2次元配列(行列)でないといけないとのこと。
よって、

//ガウス関数の重ね合わせ
f=zeros(length(xx1), length(xx2));
for k=1:xa
for i =1:length(xx1)
for j =1:length(xx2)
f(i,j)=f(i,j)+w(k)*exp(-(((i-x1(k))^2)+((j-x2(k))^2))/r(k)^2);
end
end
end
//グラフ作成
plot3d(xx1,xx2,f);

こうすべきなのではないか。


276:デフォルトの名無しさん
11/01/07 17:24:53
>>275
ありがとうございます
何とかエラー無しで動いたんですが何か真っ黒で見えないのは仕様ですかね?

277:デフォルトの名無しさん
11/01/13 00:25:17
FFTの返り値がよく分かんない

278:デフォルトの名無しさん
11/01/14 20:24:09
matlabで求めたグラフ上の点から接線を引く方法を教えていただきたいです.

279:デフォルトの名無しさん
11/01/17 18:45:23
微分すりゃ良いんじゃね?

280:デフォルトの名無しさん
11/01/17 20:30:57
>>276ですが
f(i,j)=f(i,j)+w(k)*exp(-(((i-x1(k))^2)+((j-x2(k))^2))/r(k)^2);を
f(i,j)=f(i,j)+w(k)*exp(-(((xx1(i)-x1(k))^2)+((xx2(j)-x2(k))^2))/r(k)^2);にしたら動きました
みなさんありがとうございます

281:デフォルトの名無しさん
11/01/18 13:24:21
箱の中央から3個のボールをそれぞれ異なる初速度および角度で同時に投射した。
それぞれのボールの起動を計算し、それをMatlabを使って描画せよ。
なお、3個のボールの反発係数、直径はすべて異なるものとし、ボールの運動は重力下の質点運動と考える。
といった問題なんですがどなたかやっていただけませんか?


282:デフォルトの名無しさん
11/01/18 19:06:13
またscilabの質問なのですが、
3次元のグラフにz=0の等高線を引きたい時はどうすればいいのでしょうか
URLリンク(doc.test.scilab.org)
このページを読んでもわかりません。
flagとzlev=0を使えば良さそうなんですがどういう風にnzやflagを設定すればいいかわからないです

283:デフォルトの名無しさん
11/01/19 23:00:00
>>281

284:デフォルトの名無しさん
11/01/19 23:00:37
>>281
いいよ

285:デフォルトの名無しさん
11/01/20 00:37:47
>>282ですが出来ました!
すいません

286:デフォルトの名無しさん
11/01/20 11:59:47
>>281
以前別の言語で書いたプログラムが似たような内容だったのでテキトーに移植してみた。
URLリンク(codepad.org)
大きさと質量の異なる3個のボールが箱の中で重力の影響下で動く様子をアニメーションで描画している。
反発係数は考慮していない(完全弾性衝突)。
MATLAB は持っていないので GNU Octave でテストした。動かなかったらごめんね。


287:デフォルトの名無しさん
11/01/23 09:49:29
初心者です

test.bmpというファイルをモノクロ化したい時のプログラムは

image_c=imread('test.bmp');

I=unit8(0.2989*double(image_c(:,:,1))
+0.5870*double(image_c(:,:,2))
+0.1140*double(image_c(:,:,3)));
image(I)

で可能でしょうか?
手元にMATLABがないので判断できず

間違っている場合、改善していただけると幸いです

288:デフォルトの名無しさん
11/01/25 13:36:46
>>283 >>286
質問しておきながら書き込み遅れてすいません。
どうもありがとうございました。
りかいできました。

289:デフォルトの名無しさん
11/01/27 00:59:17
C++に書き直すにはどうすりゃいいの?

290:デフォルトの名無しさん
11/01/29 04:39:48
C++を習得する

291:デフォルトの名無しさん
11/01/29 08:00:05
疑いようがない

292:デフォルトの名無しさん
11/01/30 22:25:02
A=[1,3,5];
みたいな行列があって、

BはAの最小値の要素のインデックスを受け取って、
[MinVal,MinInd] = min(A);
B=A(MinVal);

と表現するのを、
1行で書けるような気がするんだけど、パッと思いつかずモヤモヤしてます。

どなたかスカッとさせてくれませんか?

293:デフォルトの名無しさん
11/01/31 18:56:56
B = A(min(A)) じゃダメなん?

294:デフォルトの名無しさん
11/02/02 11:49:56
>>292
B=A(MinInd);
の間違い?
そうだとしたら、知らない。
でも、MinValはすでにBと同じじゃないの?

295:デフォルトの名無しさん
11/02/02 20:37:43
min じゃなく比較演算子で、たとえば

dat = dat(dat > 0);

みたいに書けることを「パッと思いつかずモヤモヤして」いるのだと想像。


296:デフォルトの名無しさん
11/02/06 16:03:05
プログラミングではなくエラーの質問です

突然あるfigファイルが開けなくなってしまいました
再起動しても治らず、原因不明で困っています

「開く」でそのfigファイルを指定すると、

error using --> open
Invalid argument. Type "help legend" more information.

と表示され、開くことができません
他のfigファイルは普通に開くことができます

解決法を教えてください
よろしくお願いします


297:デフォルトの名無しさん
11/02/06 23:31:00
>>296
そのfigうp

298:デフォルトの名無しさん
11/02/07 17:25:17
ファイルのパス名のどこかに日本語が入ってるとかは?

299:デフォルトの名無しさん
11/02/12 17:02:10
subplotを使って縦32個,横32個で計1024個のグラフをfor文回しながらplotしています.

for y=0:31
for x=1:32
 subplot(32,32,32*y+x)
 plot
end
end

こんな感じでplotしているのですが,yの値が大きくなるに従って指数関数的に
plot時間が長くなります.y=0の時は0.6秒で終わるのに,y=29では9300秒もかかってしまいます.

plotするときに,すでにplotし終わった部分まで再描画しているのでしょうか?

環境は以下の通りです.
Windows 7 Enterprise 64bit
MATLAB 2009a 64bit
Core i7 930
RAM 6GB

300:デフォルトの名無しさん
11/02/13 03:01:19
ベクター画像だから重い。
何個かのfigureに分割して保存していって、
最後にビットマップ等にしてから張り合わせるのはだめ?

301:デフォルトの名無しさん
11/02/24 00:52:27.62
MATLABのほとんど

302:デフォルトの名無しさん
11/02/24 00:55:38.12
MATLABのほとんどの関数がマルチスレッド非対応で、せっかくのマルチコアが生かせない。
シングルスレッドで速いCPUに変えたいのだけど、何がお勧め?

行列のインデックス指定による書換をfor文でぐるぐる行う演算を多用していて、
C++化以外の方法でスピードアップしたい。
コードの最適化とかはもう限界・・・


303:デフォルトの名無しさん
11/02/24 01:03:12.00
あなたにmatlabは向いていない
mex化しかないだろ

304:デフォルトの名無しさん
11/02/24 07:55:40.78
>>302
CPU の動作クロックの向上は限界に来ている→コア数を増やす、という流れなので
ハードウェア投資で逐次コードの速度向上を目指すのは無理でしょう。

まだ試していないなら for 文を極力減らす方向でコードを見直すことを進めます。
>>252のように、うまくいけば大幅に効率が上がります。

Paralell computing toolbox (PCT) を使って自前でコードを並列化するのも手だと思います。
私の同僚はモンテカルロ法のコードを PCT で並列化して「全コア100%!」と自慢していました。


305:デフォルトの名無しさん
11/03/07 19:52:37.44
Mapleとの連携についてお聞きしたいです。

Mapleで例えば、

A:=Matrix(N*M,3,[seq(seq([i,j,f[i,j]],i=1..N),j=1..M)]):

のように行列を作り、このデータをMATLABに渡して3次元プロットをしたい場合にはどうすればよいですか

306:305
11/03/09 23:23:44.86
無理矢理自己解決しました。

307:デフォルトの名無しさん
11/04/09 08:28:03.59
検索もしているけど、少し聞きたいのだが?

MATLABの便利な所が分からない。
何故使っているの?
普通にCとかでプログラムすれば良いじゃない?
Matlabじゃなくては出来ない事って何?

308:デフォルトの名無しさん
11/04/09 09:52:04.58
>>307
メモリ確保とかいらんし楽

309:デフォルトの名無しさん
11/04/09 12:22:49.47
>>307
ライブラリが豊富。というか、ライブラリ集の様なもの。外部とのIFも整ってるしね
インタプリタだからコンパイルしなくていいし、簡単なGUIなら1行ですむ。

310:デフォルトの名無しさん
11/04/09 17:13:42.34
>>307
比較ならCよりもFORTRANとの方が妥当だと思う

311:デフォルトの名無しさん
11/04/10 01:15:25.93
>>307
グラフィックまで持っていくのが楽。
3D表示がきれい。
画像処理、サウンド処理も楽。
アニメーションも可。
for文使わずに数式準拠でベクトル計算、行列計算ができる。

312:デフォルトの名無しさん
11/04/19 22:18:14.61
MATLABを仕事で使ってる社会人って多いんですか?
Adobeのソフトを使う人くらい理工系では常識的なツールなんですか?


313:デフォルトの名無しさん
11/04/22 17:48:50.64
3次元プロットのbar3関数についての質問なんですが
xticklabelを回転させるのってどうするんですか?

314: 忍法帖【Lv=14,xxxPT】
11/04/25 02:26:27.81
>>313
マウスをドラッグ

315:MATLAB放浪者
11/04/27 23:31:16.90
MATLABについてお尋ねします。
量子化された心電図データ
(16進の数で、1秒間に50個の数値が、20~30心拍分ほど)を読み込み
各々のR-R間隔(sec)を、他の場所に格納したいです。
↓R-R間隔について
URLリンク(www.sea-star.jp)

316:MATLAB放浪者
11/04/27 23:33:21.28
続き②

実際の心電図データを簡易化した例として
下のような 16進の数字の羅列があるとき

[26 1B 2A 25 5B 23 43 12 40 15 76 2C 53 12 3B 6D 3C 2E 41]
※横軸が時間で、1個のデータにつき0.2sec経過するとします。
上の数値のうち 5B 76 6D が心電図における各R点とします。
5B~76 76~6D のようなR-R間隔の時間をデータとして取得したいです。


317:MATLAB放浪者
11/04/27 23:40:23.77
続き③
*********
自分で考えてみたのは
長い16進数字羅列のうち
事前に心電図波形を見てR点がいくつ含まれているかを数え
数羅列を、そのR点の個数で分割し
|***R***|**R****|*****R*|
のような各区間でmaxの値を取れば可能かなと考えました。
R-Rの間隔については、比較した*の数×secでそうだなと。

318:MATLAB放浪者
11/04/27 23:43:03.39
続き④
******
ですが、常にR点は時間軸的に均等な幅で
計測されているわけでもないので
設定した区間にR点が含まれない場合、違った値(P波やT波やノイズ)を
検出してしまう恐れがあります。

また、波形データを入れるたびにR点の個数を入力しないとならないため
汎用性がないかなと思いました。(逐一中身を書き換えなければならないので)

319:MATLAB放浪者
11/04/28 00:04:22.93
続き⑤
****
どのようにしたらよいでしょう。
他の良い方法はあるでしょうか?
また上のような考えを実行するにはどのようにしたらよいでしょう?
当方MATLAB初心者ゆえ
具体的な関数や、より良いプログラム内容を教えていただけたらありがたいです。
よろしくお願い致します。

320:デフォルトの名無しさん
11/04/29 14:58:29.79
その図のとおりRだけが上に鋭いなら微分して符号が+から-に入れ替わる点の前後が急なところを探す
処理的には1つ前との差分を取って+からーに変わる点を抽出
さらにその前後の差分の絶対値が一定の値より大きいかどうかを確認


321:デフォルトの名無しさん
11/04/29 17:50:36.30
>>312
割と使う。でも必須でも無い(業界や職種や規模にもよるが)
使いこなせるのなら就職とかで有利な事は有利かも

ついでにAdobeのソフトもそれ程使わない気も

322:デフォルトの名無しさん
11/05/03 18:36:15.42
お尋ねします。
動画ファイルをaviファイルではなくmpegファイルで出力するmpgwriteという関数なのですが、
mpgwrite(M,map,'filename')と指示通り記述しても
「関数としてスクリプトmpgwriteを実行しようとしています」
とだけ出力されて、エンコードが実行されません。解説サイトなどに行ってもやはり
mpgwrite(M,map,'filename')
これで動くとだけ書いてあり、上のようなエラーは発生しないようです。原因としてはなにが考えられるでしょうか。

すみませんがよろしくお願いします。

323:322
11/05/03 19:35:14.49
すみません解決しました。
大変失礼しました。

324:デフォルトの名無しさん
11/05/04 08:39:32.05
Matlab/Simulinkについてお尋ねします。

今度Simulinkを使ってモデルべ-ス開発を行うことになりそうなりそうなんですが
お勧めのサイトや書籍ってありますか?

いままでCやJAVAなどはやってきているのですが、Matlabはほとんど触ったことがありません。
amazon等で探した本をちら見してもいまいちピンときませんでした。

ご教授願います。

325:デフォルトの名無しさん
11/05/08 04:27:21.61
処理が終了したらMSNメッセンジャーで
メッセージを飛ばすということはできないでしょうか?

326:デフォルトの名無しさん
11/05/08 04:53:51.94
MATLABからtwitterへ投稿できるmファイルがあったので
こちらを代用しようと思います

URLリンク(www.mathworks.com)

327:デフォルトの名無しさん
11/05/08 22:24:29.96
>>324
オレもC軽くやってMatlabいったけど
関数を適宜ぐぐりながらやったらすぐ身に付いたよ

328:デフォルトの名無しさん
11/05/11 07:44:01.20
Cで書いて、引数を渡して実行し、結果をMatlabに返す方法を教えてください

329:デフォルトの名無しさん
11/05/15 21:23:58.75
M=3個の正規白色雑音時系列データを作成し、加算平均処理を行うスクリプトを
作成したいのですがだれか教えてください。

330:デフォルトの名無しさん
11/05/16 00:12:17.45
>>328
MEXのチュートリアル

331:デフォルトの名無しさん
11/05/16 00:15:24.73
C言語と比べてMATLABの利点と欠点を教えてください!

332:デフォルトの名無しさん
11/05/16 02:57:58.82
利点:簡単
欠点:高い

333:デフォルトの名無しさん
11/05/20 11:53:33.34
画像に対して二次元フーリエ変換を行なって、
振幅スペクトルのグラフを描きたいんですが、
どのようにすればいいんでしょうか。

334:デフォルトの名無しさん
11/05/22 10:31:05.73
>>333
MATLAB 2次元FFT
でググる。

335:デフォルトの名無しさん
11/06/02 16:51:56.55
MATLABってoctaveと同じことができますか?
たとえば画像をモノクロに変えたり、その画像を上下さかさまに出力したりなど


336:デフォルトの名無しさん
11/06/02 20:50:33.30
>>331
利点:
変数ウォッチ付きの対話的環境
行列演算ライブラリが最初から組み込まれてる
行列演算子が組み込まれている
適度にライトウェイトな言語仕様

欠点:
クラスの使い方が俺にはよくわからない(わかる人いたら教えてほしい)
関数ポインタが使えない・・・と思う
コードを書き直す度に可読性が落ちて行く
1ファイル1関数(関数内でしか使わない関数は、同じファイルに定義可能)

337:デフォルトの名無しさん
11/06/03 08:50:15.17
>>335
MatlabはOctave以上に細かいことができると思う。

338:デフォルトの名無しさん
11/06/03 09:30:54.92
>>337
MatlabとOctaveはほぼ同じ

ライブラリやGUIやチャート描画関係が違うだけ
無料のOctaveの方がチープ

>>335
そんな頭悪い書き込みするなよ・・・

339:デフォルトの名無しさん
11/06/04 02:06:49.02
描画系はコマンド同じでもいくつかのグラフを重ね描きすると結果は全然違う
Matlabはちゃんと順番に描画されるがOctaveは軸やプロットそのものが消えたり不安定

340:336
11/06/07 09:34:37.27
関数ポインタ使えました。@を使ってできるみたいです。

クラスの使い方が未だにわからんwww

341:デフォルトの名無しさん
11/06/18 17:45:26.09
知恵袋でも聞いたのですが解決できませんでした。
このシステムをmatlabでシミュレーションする手順をを教えてください。

URLリンク(detail.chiebukuro.yahoo.co.jp)

342:デフォルトの名無しさん
11/06/18 18:07:49.13
まず服を脱ぎます

343:デフォルトの名無しさん
11/06/18 19:42:15.66
画像のシステム、というわりに画像を拡大させければ教えてもらえるわけ無いじゃん

344:デフォルトの名無しさん
11/06/18 20:51:42.68
異常に小さい画像や文字でプレゼンテーションするタイプだな

見ている人全員に心の中で「読めねぇよ」と突っ込まれているという

345:デフォルトの名無しさん
11/06/19 05:17:55.27
画像のソースはこれかな。 URLリンク(www.fl.ctrl.titech.ac.jp)

346:345
11/06/19 07:33:03.27
やってみた。
URLリンク(codepad.org)


347:341
11/06/19 19:32:35.15
クリックで拡大できると思ってました。
確かにこれじゃ小さくて見えないですね。

>>345
大変わかりやすいです。
本当にありがとうございます。


348:デフォルトの名無しさん
11/06/23 13:03:57.97
スレチかも知れないけど知ってる人いたら教えて下さい

Scilabで複数行にわたるコメントアウトの方法が知りたいです
ググってみたけどそれらしい情報が見当たりませんでした

349:デフォルトの名無しさん
11/06/26 20:33:48.74
MATLAB自体は良いのだが、
あの販売会社の殿様商売というか、
あからさまに”売ってやっている”というような態度は
いかがなものかと思っている。

350:デフォルトの名無しさん
11/07/04 22:50:34.03
アマゾンで売っているペーパーバック版は日本語でインストールできますか?
こちらの方が安く手に入るので気になっています

351:デフォルトの名無しさん
11/07/05 00:16:15.28
MATLAB日本語版?という意味なのか、日本語OSにインストール出来る?という意味なのか

352:デフォルトの名無しさん
11/07/05 07:26:29.38
日本語OSにインストールする際ということです
言語選択できるインストールパッケージなのでしょうか

353:デフォルトの名無しさん
11/07/07 11:45:07.93
mex内でマルチスレッドは出来たんだけど,別スレから,lapack呼び出すとなぜか落ちる.
別スレッドからmatlab関数は呼べないと書いてあったけど,lapackルーチンもダメなの??
だれかやってみた人いる?

354:デフォルトの名無しさん
11/07/07 23:54:51.19
>>352
インストーラーが日本語という意味か?文章が下手すぎて意味が分からない

355:デフォルトの名無しさん
11/07/09 15:40:32.90
for文使って数列の値をかえて、その度にk1,k2,k3と言った感じで数列の値を保存していきたいんだけど、その保存先の名前を買えていくプログラムわかる?
つまり
for(n=1,2,3,4,)
k=[n+1,n+2]
k1=[2,3]
k2=[3,4]
k3=[4,5]
↑kに付随した数字をfor文を回すたびにかえたい

ほんとに困ってるんで、誰かお助けお願いします。><

356:デフォルトの名無しさん
11/07/09 16:52:18.40
>>355
k を配列にする、つまり、k[n] でガンバッテやってみる。

357:デフォルトの名無しさん
11/07/09 17:03:00.95
>>356
返答ありがとう!!
でもよくわからない;;;

本物のプログラムはこちら
x=rand(1,4096)
for k=1:64
A{k}=[ x(64*(k-1)+1 : 64*k) zeros(1,64)]
end

ここで、A{k}がエラー起こす><

358:デフォルトの名無しさん
11/07/09 20:15:55.02
>>354
そうです
海外で販売されているものでも日本語化または言語選択が可能なのでしょうか?

359:デフォルトの名無しさん
11/07/10 01:07:55.17
インストーラーの英語なんて超簡単なのに何をびびってるのやら

360:デフォルトの名無しさん
11/07/10 09:38:03.82
USBからの入力でリアルタイム処理をしたいのですが
これって可能でしょうか?
どこかにサンプルコードはないでしょうか?

361:デフォルトの名無しさん
11/07/10 10:15:50.30
USBから何のデータを入力すんだよ
文章を書けないバカ多すぎ

362:デフォルトの名無しさん
11/07/10 10:25:57.22
インストーラが英語でもいいんですが、matlab本体を日本語表示できるかということです

363:デフォルトの名無しさん
11/07/10 10:30:15.49
>>362
できる

364:デフォルトの名無しさん
11/07/10 13:43:50.18
でもヘルプの最新版は英語。バージョンアップやらコミュニティサイト利用しようと思ったら全部英語。ライセンス管理も英語。
お前には無理だ。諦めろ。

365:デフォルトの名無しさん
11/07/14 01:33:50.12
マウスカーソルの軌跡の距離ってマトラボを使って出せますか?

366:デフォルトの名無しさん
11/07/14 14:54:52.64
>>365
とりあえず、できる。
難しさは、どの部分をどのように実装したいのかによる。


367:デフォルトの名無しさん
11/07/16 02:07:09.93
研究でマトラボ使うことになりそうなんですが、何から勉強すればいいかわかりません…
皆さんどうやって学び始めましたか?

368:デフォルトの名無しさん
11/07/16 05:51:11.03
>>367
自分の研究分野の公開されてるコードを探して読んで改造する

369:デフォルトの名無しさん
11/07/16 12:45:21.10
本当に初歩の初歩だったら何をみて勉強しても良いけど、そこから先は研究分野によって勉強しないといけないことがだいぶ違うから、先輩に聞いたり、その分野のコードを読んだりするのがいいと思う。

370:筑馬鹿生
11/07/19 22:41:08.46
初心者です。
研究で使うデータの整理として、
matlabを使ってexcelのファイルを開かずに操作したいです。
こんなものを書きました。↓
具体的には別々のexcelファイルにある行データを
列データにして一つのファイルにシートごとに変数WとTa書き出すだけです。
%10月1日

W=xlsread('土浦1001',1,'E2:AB2') %日射量
Ta=xlsread('土浦1001',1,'E6:AB6') %外気温

W=W'
Ta=Ta'*0.1
xlswrite('日射量',W,'1001','B2:B25')
xlswrite('日射量',Ta,'1001','C2:C25')


%10月2日
W=xlsread('土浦1002',1,'E2:AB2') %日射量
Ta=xlsread('土浦1002',1,'E6:AB6') %外気温
W=W'
Ta=Ta'*0.1
xlswrite('日射量',W,'1002','B2:B25')
xlswrite('日射量',Ta,'1002','C2:C25')



371:デフォルトの名無しさん
11/07/19 22:42:46.54
しかしこれを1年分するとなると365回繰り返さなければなりません。
なんとかファイル名等もfor分を使って回したいのですが、
どうも上手くいきません。
1か月分だけでもfor分で回すとかなり楽になると思いますが何か方法はあるのでしょうか?
理想的にはこんなイメージです↓

for i=1:31

W=xlsread('土浦100i',1,'E2:AB2') %日射量
Ta=xlsread('土浦100i',1,'E6:AB6') %外気温

W=W'
Ta=Ta'*0.1
xlswrite('日射量',W,'100i','B2:B25')  %('ファイル名',変数,'シート名','書き出すセル番号')
xlswrite('日射量',Ta,'100i','C2:C25')

end

ファイル名やシート名にも変数iを用いてまわしたいです。
どなたかお願いします。


372:デフォルトの名無しさん
11/07/19 23:02:55.39
m=10
d=1
sprintf('土浦%02d%02d',m,d)
って感じで

373:デフォルトの名無しさん
11/07/19 23:30:38.19
>>372
なるほど・・・
%を入れて変数にすれば良いわけですね。
明日学校でやってみます。

ありがとうございます。

374:デフォルトの名無しさん
11/07/20 11:47:31.94
お尋ねします.
mファイルを実行することでコマンドプロンプトを起動し,
さらに命令を与えることは可能でしょうか?
コマンドプロプトを起動することはできたのですが,
命令を与えることができません.
よろしくお願いいたします.

375:デフォルトの名無しさん
11/07/20 14:33:09.30
>>374
外部アプリ呼び出すだけなら system ファンクション一発で
何でもできると思うんだけど、具体的に何したいの?

376:デフォルトの名無しさん
11/07/22 05:00:37.82
障害物回避軌道の生成と運動シュミレーションの準備として、
MATLABにより任意形状の障害物を対話的に配置できるようなプログラムを
つくりたいのですがどのようにプログラムを書けばいいのか
わかりませんどなたか教えていただけにでしょうか。

よろしくお願い致します。

377:デフォルトの名無しさん
11/07/22 12:19:17.85
>>375
ありがとうございます.
外部アプリで計算を行わせたくて,そのために
外部アプリのコマンドプロンプト上で何回かコマンドを
与えたいのです.

378:デフォルトの名無しさん
11/07/22 15:54:46.30
>>377
具体的にその外部アプリの名前おしえて。
もし僕が持ってる奴なら検証してあげられるから。

引数の与え方やバッチ的な処理の流し込み方はアプリによって千差万別なので、
「外部アプリのコマンドプロンプト」だけだと明確な答えは得られないと思うよ。


379:デフォルトの名無しさん
11/07/22 16:35:30.61
>>378
ご親切にありがとうございます.
外部アプリは私的なものでして,具体的には
matlabで外部アプリのコマンドラインを呼び出し,
(!cmd.exeの状態とほぼ同じです)
さらに下記の命令を入力できるでしょうか?

load "ファイル名"
run
print <ファイル名>
exit

たびたびすみません.

380:デフォルトの名無しさん
11/07/24 16:58:22.77
>>379
それは Matlab 云々の話ではなくて、その外部アプリの仕様次第です。
たとえばその外部アプリが、引数として指定したファイルを読み込んで
バッチ的に処理してくれるような仕様なら、Matlab からでも実行可能。

381:デフォルトの名無しさん
11/07/25 13:21:11.04
>>380
なるほど,有難うございました.

382:Matlab でもクラス記述できるでしょうか
11/07/25 22:14:19.58 BE:1096023528-2BP(0)
Matlab でもクラスを扱えるように拡張されていることは知っています。でもクラス
を使った Matlab コードを見たことがありません。Matlab クラスで どの程度のこと
ができるのか、よく分りません。

例えば BL:Bool 体クラス、PL:Bool 体係数多項式クラスを作って、下のような Bool
 体係数多項式の加減乗除べき乗算・剰余算をさせられるでしょうか。

b1=BL(1); b0 = BL(0)
P = PL(b1, b0)

(P^5 + P^3+1)%(P^2+P+1)
===============================
P+1


383:デフォルトの名無しさん
11/07/26 12:37:55.92
>>382
Mathworks のサイトにある Object-Oriented Programming のドキュメントは読んだ?
もちろん boolean のクラスを作って加減乗除させるくらいはできます。

しかし、積極的にクラスを使った Matlab コードは、確かにあまり見ないね。
個人的には、自分のプログラミングスタイルだと、クラスを使ったところで
Backward compatibility とコードの可読性が落ちる「だけ」というのが、
クラスを使わない主な理由だったりします。


384:デフォルトの名無しさん
11/07/26 21:33:06.23
>>382
matlabからmacaulay2呼び出せば良い

385:Matlab でもクラス記述できるでしょうか
11/07/27 07:04:51.75 BE:3082563195-2BP(0)
>>383 ご意見ありがとうございます。382 です。

>>  Mathworks のサイトにある Object-Oriented Programming のドキュメントは読んだ?
飛ばし読みしました。それらの文書を本腰を入れて読むべきか判断したくて先の投稿
になりました。何日も潰して理解して、その結果が「Matlab のクラスは使い物にな
らない糞だ」では悲しすぎるからです。

>>  もちろん boolean のクラスを作って加減乗除させるくらいはできます。
そう思ったので「多項式環が扱えるのか?」とハードルを上げて質問しています。

>>  Backward compatibility とコードの可読性が落ちる「だけ」というのが、
「クラスを使うと可読性が落ちる」なんて「クラスの使い方を誤っている」か、もし
くは「Matlab のクラスが使い物にならない糞だ」ということになると思います。

確かに糞だとすれば、Matlab でクラスを使わないことの説明になります。

Porogramming style の点でみると Matlab は古臭いと思います。それとの
 compatibility を保証しながら OOP 記述を可能にするのは簡単ではないだろうと思っ
ています。結果として Matlab のクラスは使い物にならないしろものになっていると
思ってよさそうです。Object Oriented Cobol みたいな物にならざるをえないのでしょ
う。



386:Matlab でもクラス記述できるでしょうか
11/07/27 07:05:57.71 BE:822017726-2BP(0)
>>384 ご意見ありがとうございます。382 です。

私の目的は Matlab でブール体係数多項式の加減乗除べき乗算+剰余体演算を実装で
きるかを知ることです。Matlab でブール体係数多項式演算を行うことではありません。

でも、384 さんも、そんな実装は無理だと思っているようです。参考になりました。
ありがとうございました。



387:デフォルトの名無しさん
11/07/27 11:27:27.24
こんにちは。
リンク先の「クラス定義の複数のファイルへの分配」に習って
メソッドを別のファイルに定義したいと思うのですが、
具体的にどう書けばよいかわかりません。

URLリンク(www.mathworks.co.jp)

たとえば

home/@ClassNameA/ClassNameA.m
classdef ClassNameA
 methods
  function FuncX(obj)
   disp('X');
  end
  function FuncY(obj)
   disp('Y');
  end
end

のFuncYを別のファイルに記述したい場合、
ClassNameA.m と classMethod.m はどのように記述すればよいでしょうか。

388:デフォルトの名無しさん
11/07/27 13:27:01.86
>>386
その意味では、実装は可能というのが最終的な答えですよね?
実装するしないはともかくとして。
Matlab でのクラス関連のノーテーションが糞かどうかは
結局好みの問題になるかと思うのですが、
OOP から入った人なら、すんなり受け入れられるんじゃないでしょうか。

>>387
さらにそのページにある「別ファイル内のメソッド」リンクを辿った先に、
ずばり答えが書かれてます。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch