1read 100read
2013年06月プログラム167: MATLABプログラミング 質問箱 その4 (141) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Io Language (130)
ネットワークプログラミング相談室 Port29 (229)
アセンブラ 13 (143)
攻守最強のプログラミング言語は? (129)
テストしにくいコードをテストする方法教えて下さい (586)
【Java】 Java Web Application Framework 総合 (696)

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


1 :2012/09/03 〜 最終レス :2013/06/22
MATLAB 日本語版
http://www.cybernet.co.jp/matlab/
MATLAB本家
http://www.mathworks.com/
YahooMATLAB
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プログラミング 質問箱 その3
http://toro.2ch.net/test/read.cgi/tech/1254528108/

2 :
>>1
乙です。即死回避保守。
simulinkって制御に使う他に、
Scratchみたいなビジュアルプログラミング言語として遊べるかな?

3 :
windowsなんかでparfor使った場合、マルチスレッドと言えばいいのかな?マルチプロセス?
タスクマネージャ見ると1人のworkerは1つのプロセスみたいだけど

4 :
突然の質問失礼します。
if文を一つだけ抜けさせるbreak構文はどうしたらよいのでしょうか?
例えば、
for i=1:100
~
~
for j=1:1000
if ある条件
~
else
ここである条件で抜ける(Aへ)
~
~
end
end
@
end
A

5 :
上記のように@へ抜けさせたいのですが、break構文を使うと、
Aにいってしまい、終了してしまいます。。
breakで@へいって、再度iの続きをさせたいのですが、どのようにやればよいのでしょうか?
なお、for jからendまで数千行あるため、ある条件で@へ出させることができれば、
非常に効率が良いです。

6 :
>>5
breakなら@に行くのでは?

7 :
Aに行ったんじゃなくてどっかにreturnがあってそこで終了してたとか

8 :
数千行。

ふう。

9 :
すみません、質問なんですが3次元の疎行列とスカラーの積を求めようとすると
以下のようなエラーが出てしまいます。
p = 18 x 24 x 4 doubleの疎行列
wx = 0.95
a = wx * p
Error using .*
ND-sparse arrays are not supported.
この計算を行うにはどのように書けば良いでしょうか?

10 :
>>5
6のいうとおり、breakなら(1)に行くと思う。
(1)の前のあたりまで戻りたいのであればcontinueが使えるかも。

11 :
>>9
答えかいてあんじゃん

12 :
>>4
つmatlab do while

13 :
どっかバグってんじゃね
その数千行を整理していけば直るのでは

14 :
質問です.
uigetdir関数を用いてディレクトリへのパスを変数dir_pathに入力する関数Aを作成しました.
再度関数Aを使用する際,uigetdir関数のオプションにある,デフォルトのディレクトリを前回指定したdir_pathに設定する仕様にしたいと考えています.
しかし,関数Aの冒頭でdir_pathを読み込んだ場合,初実行の場合”未定義の変数”としてエラーを吐き出してしまいます.
何か良い方法はありませんでしょうか?

15 :
これってkeyなしで使えるんですか?

16 :
>>15
割れ乙

17 :
すまん、割れって?
いやオクで買っても仕方ないのかなと。

18 :
macにおいてMATLABを使用している者です
latexを使用するためにいろいろ設定したところプログラムが実行はできるもののずっと回帰せずにこまっています
参考にしたのが
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/install_xtexgsgv.html
なんですがこのページの(0.下準備)のところでターミナルでecho $shellを実行したら
/bin/bash
と表示されたので説明に従いコマンドを実行したのが原因かとおもわれます
macについてあまり詳しくないのでどうすればいいのか調べているところですがわかる方いましたらご教授おねがいします


19 :
スゲー素敵なタイトルのページだね

20 :
Mac板のTeXスレに行った方がいい。

21 :
>>14
mファイル実行なら自動的にdir_pathはワークスペース変数に保存されて
14が考えているようにできるんだが, 関数実行だとワークスペースに保存されないから
matlabのワークスペースに保存すれようにすればいい。保存場所は関数Aと同じ場所。
matファイルの保存方法はhelpを見てちょ。

22 :
>>14
言い忘れた。
1:関数Aの最初で,dir_pathをloadね。
2:uigetdir使ったらdir_pathを更新。
3:save

23 :
>>4
皆が言ってるようにbreakで@に出るはず。
あと、毎回言って得るんだが、matlabでforの2重ループはやらんほうがいい。
行列使うかreshapeで一次元化してやれ。

24 :
インタラクティブチュートリアルに登録するために必要事項を入力し、登録ボタンを押したのですが、
We're Sorry - an error has occurred
We apologize for the inconvenience. This error has been automatically reported to MathWorks.
We will fix this as soon as possible.
というエラーがかえってきてしまいます。
なぜでしょうか。
Chrome, Firefox, Safariそれぞれ試してみましたが、どれもダメでした。
OS X 10.7.3です。

25 :
え、おれ行列要素の操作に二重for使ってしまうんだけど、どうするのが正しいんだろう

26 :
>>25
やりたい処理による
どんな処理してるの?

27 :
あるディレクトリないのものでループさせるとき、
Bシェルでfor day in `ls dir`みたいに書くのをMATLABだとどういう風になるのか教えて下さい。
ちなみにあるディレクトリは日付のディレクトリです。

28 :
>>26
やってるのは画像処理だけど、たとえばxyの添字が共に奇数、共に偶数、それ以外、に分解するとか。
他には、各要素の上下の差と左右の差を求めて、差異が小さい方の平均値で置き換えるとか。
あともっと単純なのだと、各要素がある値より大きければその値で置き換えるってのもあったな。
適した機能があるか調べるよりループで書いちゃった方が早かったんで。

29 :
>>27
日付のアドレスのファイル名を取得したいということ?
files = dir('日付のアドレス');
filenames = {files.name};
for i = 1: length(filenames)
if strcmp(filenames{i},'.') || strcmp(filenames{i},'..')
filenames(i) = [];
end
end
filenames{:} %<-ファイル名表示
今, matlabないから動作確認はしとらん。
質問抽象的すぎ。

30 :
>>28
差とるんだったらdiffとかbsxfun使えよ。

31 :
>>28
俺も画像処理だから多分こんな感じ
ひとつめ
I(1:2:end,1:2:end)=処理;
ふたつめ
conv2とfindつかったら?
みっつめ
I(I>0.5)=1;
画像処理でfor文は基本NG
てかmatlabはそういう使い方するもんじゃない

32 :
固定のフィルタではconv2を使っていたけど、条件によって処理が別れる場合
どうすればいいかわかんなかった。findでできるんであれば調べてみるよ。
3番目はそのまんまの機能があったんだな。

33 :
25です。29さん、ありがとうございます。
抽象的ですいませんでした。
具体的な質問は、DATEというディレクトリ内には120923、120924、
120925などというディレクトリがあります。
Bシェルだとfor day in 120923 120924 120925や、
for day in `ls $DATE`などとループを回していたのですが、MATLABでは
どのようなループになるか教えて下さい。
お願いします。

34 :
>>33
FOLDERZ = dir('DATE');
FOLNAMES = {FOLDERZ.name};
filenames = FOLNAMES(3:end);%必ず相対パス'.'と'..'が最初に来ると仮定すると
コマンドウィンドウ
>>filenames(:)%<-表示
ans =
'120923'
'120924'
.
.
.
>>filenames{:}%<-表示
ans =
120923
ans=
120924
.
.
.
てな感じ
>>29の訂正
FOLDERZ = dir('DATE');
FOLNAMES = {FOLDERZ.name};
FOLNUM = length(FOLNAMES);
FOLNAMENEW =[];
for i = 1:FOLNUM
if ~strcmp(FOLNAMES{i},'.') && ~strcmp(FOLNAMES{i},'..')
FOLNAMENEW = [ FOLNAMENEW ,{FOLNAMES{i}}];%あまり書き方よくない
end
end

35 :
34さん
ありがとうございます。
なかなかうまくいきませんが、
もう少しあがいてみます。

36 :
TV法ていろんなやり方あるけど導出をやってる論文で日本語のものありますか?
典型的なものから応用してるのまでどれでもいいです

37 :
>>36
誤爆orz
すんません

38 :
現在 windows7 64bit で Matlab 2007b を使用しています。
mex -setup コマンドを試したところ、Noneしか出ずにコンパイラを選択することができません。
C++コンパイラを使用したいのですが、この場合何をインストールすればよいのでしょうか。
現在visual C++ 2008 express edition と 2010 express edition はインストール済みです。

39 :
>>38
ググったらいくらでもでてくるだろ

40 :
どなたかOS:windows7 64bitを使用していてgetframeで問題が出てる人いませんか?
for文を回す中でgetframeで逐次ウィンドウをキャプチャしていくコードを組んでいるのですが
なぜか最初の1フレーム目のみを延々とループ回数分だけキャプチャしてしまいます
windowsXP32bitではこんなエラー出なかったのですが・・・
どなたか心当たりのある方いらっしゃいましたらご教授いただければと思います
よろしくお願いします

41 :
windows7で2012aを使っております。
mathworks製のツールボックスで使われているクラスにメソッドを追加したいのですが、
自分以外のユーザーに影響を与えないようにする方法はありますでしょうか?
具体的には、symbolicツールボックスのsymクラスにないmin()などを追加したい場合などです。
\toolbox\symbolic\symbolic\@sym フォルダに書かず、
C:\Users\ユーザー名 以下に書いたりできるのでしょうか?

42 :
symをオレオレクラスに継承するしかないでしょうか?

43 :
40です
解決はできていませんが原因は分かったので、一助になればと思いこちらに報告します
どうもgetframeで取得したい軸または図に
set(gca,'Facealpha',0.5)
などと透過率を設定してやると>>40の症状が発生するようです
どうぞご注意を

44 :
>> 40
Renderer変えると治るかも
OpenGLでダメだったことがあって、zbuffurとかに変えたら治った気がする
set(gcf,'Renderer','zbuffer')
みたいな感じだったと思う

45 :
>> 43
そもそもaxesプロパティでFacealpha設定できねーし。
patch かsurf の軸ハンドルを設定したんだろ。
try catchで囲ってエラー出なかっただけじゃね。

46 :
y=1/det(diag[exp(x),exp(2x),exp(3x)]^2)
(diagは対角行列,detは行列式)
(xは変数で1から10など好きに変化させる。)

このような物を計算し、x,y平面でグラフを書きたいのだが、
(本当はもう少し複雑な式ですが、簡易化してる。)
x=1:1:10
A=[exp(x) 0 0; 0 exp(2*x) 0; 0 0 exp(3*x)]
z=det(A)

としてもエラーが出てしまうんだよ
配列型のソフトだから上手くいかないのはあとでわかったのだけど、
上手く行列内に関数を入れることはできるのでしょうか?
できるのであればその定義の仕方を教えろください。

47 :
2次元正規分布の描画を平均ベクトル(2*1)と分散共分散行列(2*2)の値を代入した変数から行う
関数を作成したい
----------------------------------
function 2dim_Seiki(x,m,Cov)
[x,y] = meshgrid(linspace(-1,3,25)',linspace(-3,1,25)');
X = [x(:) ; y(:)];
Out = mvncdf(X,m,Cov);
surf(x,y,reshape(Out,25,25));
return;
-------------------------------
ここまでmファイルを作成しましたがエラーになってしまいます
やり方を教えてください。おねがいします!

48 :
age

49 :
>>47
変数名の先頭に数字を入れている時点で論外
もっと勉強しな。かす。

50 :
>>49
変数先頭を修正しました。ありがとうございます
そして、どうかカスな私にやり方をおしえてください
あれから下のような関数を考え、実行しましたがエラーになってしまいます
Pdf = 1/(sqrt(2*pi)).^-2.*sqrt(det(Cov)).^-1.*exp(-5.*(X-m).'.*inv(Cov).*(X-m));

51 :
>>50
エラーならエラーを書け。
長い式は一時変数を使ってどんどん分解していけば人に聞く前に
アホでも気付く。
ここは宿題丸投げスレじゃない。
それに式自体あっちこっち間違ってる。
正定ならcholつかう。
ベクトル化する前に、スカラ出力が正しいかするのが先。

52 :
>>51
ありがとうございます。一度、一時変数を使用します
エラーは"行列の次元は同じである必要があります"と表示されます
何度か修正しましたが、改善されず上と同じエラーは出ます
現在下のような形になってます
Pdf = 1/(sqrt(2*pi))^(-2/2)*sqrt(det(Cov))^(-1/2).*exp(-(X(:)-mu)'*inv(Cov)*(X(:) - mu)/2);
間違っている個所についてヒントで十分ですので、どうかご教授をおねがいします

53 :
>>52
それだけ見ても分からん。変数の次元が違うなら次元が違うわけで各size()は?
Xは(:)しちゃあかんでしょ。 データの数xデータの次元 なんじゃ?

54 :
ようするにX=X'

55 :
>>53-54
ありがとうございます
早速調べたいと思います

56 :
MatlabのGuiはOctaveでも使えますか?おしえてください

57 :
age

58 :
GPUを使ってみたけど、遅くて非常に後悔

59 :
MATLABって速さを求めるものじゃなくね?

60 :
>>56
できない

61 :
へえ

62 :
>>60
どうしても使えるようにしたいのですが、MATLAB以外のソフトで方法はないのでしょうか?

63 :
>62
マルチやめれ

64 :
おしえてやれよ

65 :
MATLAB互換の関数がOctaveにあれば可能
なければ自作しろ

66 :
あ?俺のために作れよ

67 :
なんで?

68 :
質問です
guideで作成したツールのウィンドウを閉じたときに処理を追加したいのですが
どうすればいいのでしょうか?

69 :
質問です
Matlabで画像とか絵の傾きを検出する方法ってありますか?

70 :
ないアルヨ

71 :
そうですか...。ありがとうございます

72 :
何を基準に傾きを出すのかしらんけど、MATLABじゃなくて画像処理全般の話題だろ
幾何モーメントとか勾配ヒストグラムとか方法は色々ある

73 :
MATLABを用いて時系列データに対して、
周波数領域でバンドパスフィルタをかけたいのですが
ネットで探しても時間領域でのフィルタについてしか
でてきません。どなたか教えていただけますか?

74 :
>>73
周波数カットするのに時系列のフィルターは使えないってことみたいだけど、
時系列のフィルターかければ周波数カットされる
FFT解析で周波数分かるから、フィルターかける前と後で比べてみれば良いと思う
FFTはググって
質問の意味が違ってたらすまん

75 :
>>73
MATLAB helpや参考書など大量に情報はあるぞ。デジタルフィルターを学ぶと確実に書いて有ること。
単に周波数領域というかデジタルフィルターを理解してないのでは?
コマンドだと、fft、ifft の使い方がわかれば理解できる

76 :
>>74
×時系列のフィルター
○時間領域でのフィルター
だった。
代行書き込みなので、書き込みが遅くなったらすまん

77 :
フーリエ変換に関する質問なんだけど
Simulink上で0~n*Ts(n:サンプリング数,Ts:サンプル時間)の間実行して
得られたデータをfftかけるわけだけどもこの時時間軸のデータ個数は(n+1)個あるので一番初めの0秒のときのデータを削ってるんだけど合ってるのか不安
シミュレーション時間を長めにとったほうがいいんだろうか?

78 :
用途次第なのでなんとも
定常のときはデータ数多いほうが安定になる

79 :
>>73
探し方が悪い

80 :
>>78
おいおい
>>77
fftの周波数分解能はシミュレーション時間で決まる
別にt=0を削っても問題はないけど、もうちょっと調べてから使うべきじゃないか

81 :
最近workspaceの画面サイズを変更すると2分くらい固まるようになりました。
設定をいじったことが原因な気がするのですけど、何か原因に心当たりないでしょうか?

82 :
>>80
> fftの周波数分解能はシミュレーション時間で決まる
> 別にt=0を削っても問題はないけど、もうちょっと調べてから使うべきじゃないか
ばかかおまえ

83 :
>>81
メモリの問題じゃないかな

84 :
シミュレーション時間っていう言葉がそもそも間違ってるじゃんw

85 :
>>83
メモリは8G積んであるのだけど、スワップが起こってるんでしょうかね?
ひとまず再インストールしたら快適になったので、様子見してみます。
また同じ症状が起こったら原因特定して報告したいところ。

86 :
各変数a~fにそれぞれ数字1~6を割り当てたくて下のように二行に分けてるけど
もっとスマートに一行で書く方法ないですか?
変数の名前に意味もたせてるから変数を配列にするのはナシで。
temp = num2cell(1:6);
[a,b,c,d,e,f] = deal(temp{:});

87 :
>>86
http://www.mathworks.co.jp/jp/help/matlab/ref/deal.html

88 :
スマートに書く必要ないとおもうが

89 :
matlabで微分したいのですが
syms x y z
A=x^2+y^2+z^2
B=diff(A,x) %Aの式をxで微分
実行 → ans=2x
だと通常通りできるのですが↑式を

A=(x(1))^2+(x(2))^2+(x(3))^2
としてx(1)で微分して
実行 → ans=2x(1)
と言う風に引数でしたいのですが symsで宣言できなかったりします。
どうすればよいでしょうか?教えてください。

90 :
Symbolic Math Toolboxがインストールされてないに一票

91 :
うそ、ごめん。ちゃんと読んでなかった。

92 :
matlabで画像処理をしています
画像の各画素の青の値に常用対数をとり、その平均値を出したいのですが
その値が-infになってしまいます
どうしたらよいでしょうか?よろしくお願いします
A = imread('image.bmp');
blue = A(:,:,3);
blueD = double(blue);
bLog = log10(blue);
baverage = mean2(bLog);

93 :
>>92
そういった経験がなく画像の常用対数の平均値を出すことの意義が分からないのではっきりした解決策は出せませんが
常用対数を出した時点
bLog=log10(blueD);
で青の信号が0の要素は-infになってしまいます。
-infが混じった平均をとると結果も-infになります。
なので常用対数をとる前にblueDの0の要素だけ例外処理するなりしないといけません。
ただ、例外処理の先をどう扱うか(例えば-1扱いにするか平均から除外するか)で結果も変わると思います。
相対値だけが問題なのであればblueDの全要素に+1するという手もありますが。
前者の場合はif文使うぐらいしか思い浮かびません。
もっと上手い手もあるかもしれませんがこれぐらいでご勘弁を

94 :
>>92
対数で-Infがでるときは
min(blue)
max(blue)
まずこれを確認する
回避策としては0をNaNで置き換えて(findを使う)
対数をとって
NaNで置き換えた要素に何かを入れる(何を入れるかはその後の処理に依存)

95 :
MATLAB Corder使っている方いませんかMATLAB言語からC/C++コードを直接生成したいのですが、お値段が高く・・買えないです。
一部のブログラムだけ変換していただけないでしょうか。
こちらのほうに連絡していただければプログラムを送信しますのでよろしくお願いします。
uerihufour@yahoo.co.jp
skypeID:yusuke-0727

図々しい質問をしているのはわかっていますが本当に困っているのでよろしくお願いします m(__)m

96 :
simulinkモデルからreal-time workshopでコード生成してみたけど、出来たコード重くてあかん。最適化のチェックはいれてるんじゃが。なんかコツがあるのかな。
コツご存知の方、ご教授ください。

97 :
微分方程式を解いたあとに特定の時間の値を求めるのはどうすればよいのですか?

98 :
>>81ですが、近頃また調子が悪くなってきていました。
先ほど、警告: com.mathworks.mde.explorer.Explorer を作成できません。
というエラーが出たためググったところ
http://www.mathworks.co.jp/support/solutions/ja/data/1-H9I9LH/index.html?product=ML&solution=1-H9I9LH
このページがヒット。載っている通りにリネームしたら一気に軽くなったので、
>>81も何かファイルが破損していたのが原因だった可能性が高そうです。

99 :
>>95
本家のHPでチラッと見たけど、最近のscipyってcのコードを生成するんじゃねーの?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【消しゴム】MONOを使ってみるスレ4【じゃない】 (461)
C/C++以外の推薦図書/必読書のためのスレッド (109)
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part16 (128)
攻守最強のプログラミング言語は? (129)
プログラミング雑談スレ (145)
JAVAってこんなことも出来ないの? (670)
--log9.info------------------
頭に「男の」とつけると渋くなるものinビリ板 (104)
手球とともに苦難をポケットに落とすスレ (117)
何が悪い? (120)
ビリヤード (108)
ニイマハ後援会 (137)
【ナイス】スランプ脱出【アドバイス】 (180)
ビリヤードしてるかわいい子を探そう (129)
[アーニー] Gina Custom Cue [レインボー] (112)
ビリヤードをオリンピックに!!! (176)
四国のビリヤード事情Part2 (151)
色々なものになって語るスレ in ビリ板 (119)
  玉屋の経営をシミュレーション (114)
渡辺ヤード (118)
【チンコ】DCBキュー【ジョイント】 (184)
ヒロシです・・・ (189)
俺のブレークは強烈すぎる。 (156)
--log55.com------------------
【紫紺の襷】明治大学競走部スレPart110(ワッチョイ)
悪質な信者のせいで浅田真央嫌いになった人の数348
東海大学中長距離ブロック応援スレpart266
羽生結弦を嫌いになった&なりそうな人★47
【WJBL】女子バスケ総合スレ part44【高校・大学】
【マターリ】東洋大学陸上競技部応援スレ40【避難所】
青山学院大学陸上競技部応援スレ93
早稲田大学競走部 vol.403