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

1 :デフォルトの名無しさん:2012/09/03(月) 17:35:08.97 .net
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 :デフォルトの名無しさん:2012/09/05(水) 21:48:22.34

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

3 :デフォルトの名無しさん:2012/09/05(水) 22:44:16.55

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

4 :デフォルトの名無しさん:2012/09/06(木) 23:20:08.68

突然の質問失礼します。
if文を一つだけ抜けさせるbreak構文はどうしたらよいのでしょうか?

例えば、

for i=1:100


for j=1:1000
if ある条件

else
ここである条件で抜ける(へ)


end
end

end

5 :デフォルトの名無しさん:2012/09/06(木) 23:21:51.61

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

6 :デフォルトの名無しさん:2012/09/07(金) 00:01:10.96

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

7 :デフォルトの名無しさん:2012/09/07(金) 01:50:59.55

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

8 :デフォルトの名無しさん:2012/09/07(金) 04:31:56.15

数千行。

ふう。

9 :デフォルトの名無しさん:2012/09/07(金) 11:50:31.38

すみません、質問なんですが3次元の疎行列とスカラーの積を求めようとすると
以下のようなエラーが出てしまいます。

p = 18 x 24 x 4 doubleの疎行列
wx = 0.95

a = wx * p

Error using .*
ND-sparse arrays are not supported.

この計算を行うにはどのように書けば良いでしょうか?

10 :デフォルトの名無しさん:2012/09/07(金) 14:42:47.54

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

11 :デフォルトの名無しさん:2012/09/10(月) 00:45:07.98

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

12 :デフォルトの名無しさん:2012/09/10(月) 00:48:16.58

>>4
つmatlab do while

13 :デフォルトの名無しさん:2012/09/10(月) 01:40:47.23

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

14 :デフォルトの名無しさん:2012/09/12(水) 11:33:03.40

質問です.

uigetdir関数を用いてディレクトリへのパスを変数dir_pathに入力する関数Aを作成しました.
再度関数Aを使用する際,uigetdir関数のオプションにある,デフォルトのディレクトリを前回指定したdir_pathに設定する仕様にしたいと考えています.

しかし,関数Aの冒頭でdir_pathを読み込んだ場合,初実行の場合”未定義の変数”としてエラーを吐き出してしまいます.
何か良い方法はありませんでしょうか?

15 :デフォルトの名無しさん:2012/09/19(水) 23:51:52.98

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

16 :デフォルトの名無しさん:2012/09/20(木) 00:25:15.82

>>15
割れ乙

17 :デフォルトの名無しさん:2012/09/20(木) 01:26:06.74

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

18 :デフォルトの名無しさん:2012/09/21(金) 03:33:05.50

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

19 :デフォルトの名無しさん:2012/09/21(金) 03:55:03.39

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

22 :デフォルトの名無しさん:2012/09/24(月) 11:47:24.51

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

21 :デフォルトの名無しさん:2012/09/24(月) 11:42:33.60

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

20 :デフォルトの名無しさん:2012/09/21(金) 11:26:51.71

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

23 :デフォルトの名無しさん:2012/09/24(月) 12:00:23.39

>>4
皆が言ってるようにbreakでに出るはず。

あと、毎回言って得るんだが、matlabでforの2重ループはやらんほうがいい。
行列使うかreshapeで一次元化してやれ。

24 :デフォルトの名無しさん:2012/09/24(月) 21:27:27.70

インタラクティブチュートリアルに登録するために必要事項を入力し、登録ボタンを押したのですが、
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 :デフォルトの名無しさん:2012/09/24(月) 21:55:47.90

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

26 :デフォルトの名無しさん:2012/09/25(火) 16:18:30.44

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

27 :デフォルトの名無しさん:2012/09/25(火) 16:22:50.95

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

28 :デフォルトの名無しさん:2012/09/25(火) 20:54:10.53

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

29 :デフォルトの名無しさん:2012/09/26(水) 00:11:45.45

>>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 :デフォルトの名無しさん:2012/09/26(水) 00:15:28.78

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

31 :デフォルトの名無しさん:2012/09/26(水) 03:12:01.19

>>28
俺も画像処理だから多分こんな感じ
ひとつめ
I(1:2:end,1:2:end)=処理;

ふたつめ
conv2とfindつかったら?
みっつめ
I(I>0.5)=1;
画像処理でfor文は基本NG
てかmatlabはそういう使い方するもんじゃない

32 :デフォルトの名無しさん:2012/09/26(水) 08:18:15.55

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

33 :デフォルトの名無しさん:2012/09/26(水) 16:24:21.99

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

34 :デフォルトの名無しさん:2012/09/26(水) 20:41:43.37

>>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 :デフォルトの名無しさん:2012/09/28(金) 17:17:35.05

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

36 :デフォルトの名無しさん:2012/09/29(土) 21:50:49.77

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

37 :デフォルトの名無しさん:2012/09/29(土) 21:51:28.79

>>36
誤爆orz
すんません

38 :デフォルトの名無しさん:2012/10/02(火) 22:42:54.28

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

39 :デフォルトの名無しさん:2012/10/03(水) 10:05:45.66

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

43 :40:2012/10/09(火) 11:01:54.59

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

47 :デフォルトの名無しさん:2012/10/13(土) 18:32:41.89

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ファイルを作成しましたがエラーになってしまいます
やり方を教えてください。おねがいします!

49 :デフォルトの名無しさん:2012/10/16(火) 00:22:30.02

>>47
変数名の先頭に数字を入れている時点で論外

もっと勉強しな。かす。

53 :デフォルトの名無しさん:2012/10/17(水) 12:25:40.55

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

59 :デフォルトの名無しさん:2012/10/21(日) 11:05:44.24

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

68 :デフォルトの名無しさん:2012/10/26(金) 01:20:01.08

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

92 :デフォルトの名無しさん:2012/11/28(水) 19:34:03.46

matlabで画像処理をしています
画像の各画素の青の値に常用対数をとり、その平均値を出したいのですが
その値が-infになってしまいます
どうしたらよいでしょうか?よろしくお願いします

A = imread(‘image.bmp’);
blue = A(:,:,3);
blueD = double(blue);
bLog = log10(blue);
baverage = mean2(bLog);

105 :デフォルトの名無しさん:2013/01/25(金) 19:47:05.58

画像処理で5枚の画像を呼び出して同じ処理をするってのをやってるんだけど、

imread(‘C:/position/*.jpg’);

の*をi = 1:5とかにしたいんだけどどうしたら良いか分かりますか?

177 :デフォルトの名無しさん:2013/12/17(火) 01:38:40.35

今時微分積分もスマホのCASでも出来るよ
ネットでPCならSage math cloudがお勧め

216 :デフォルトの名無しさん:2014/08/22(金) 12:01:14.93 ID:HUPln6ac

scilab+SIVPで画像処理をしてるけど処理が激遅で困ってます
┌──┐
│ ○ │→┌───┐
└──┘  └───┘
↑みたいな480×640の画像で、真ん中の円の部分を長方形の画像に展開したいんですが、
1ドットずつ長方形の枠に色情報を移すようなループ処理でやってるせいか超遅い・・・

円の半径は480/2の240として、円の最外周から30ドットくらいまでを長方形の画像に
展開するのに高速で終わるようにするにはどうしたら良いでしょうか。
今は下みたいな処理をしています。

MARUは480*640*3の配列で、SIKAKUは30*1500*3の配列
MARUで指定する座標の色情報を一つずつSIKAKUの配列に入れて行く
r=240 //半径r
while(r>210)  //半径の最大から最小値まで繰り返す(行置換)
  a=360    //360°ぐるりと回りながらドット取得
  j=1     //長方形展開後の色情報を格納する列番号
  while(a>0)  //角度を360から0まで繰り返す(列置換)
    x=round(px+r*cosd(a))  //○画像の抽出したいドットの横方向座標取得
    y=round(py+r*sind(a))  //○画像の抽出したいドットの縦方向座標取得
    SIKAKU(i,j,1)=MARU(y,x,1)  //R・G・Bそれぞれ円の座標の色情報を
    SIKAKU(i,j,2)=MARU(y,x,2)  //長方形の画像の指定する場所に格納
    SIKAKU(i,j,3)=MARU(y,x,3)
    j=j+1 //長方形展開後の次の色情報を格納する場所の列指定
    a=a-0.24 //0.24°角度を移動 (半径480ドットの円の円周≒1500ドット、360/1500=0.24)
  end
  r=r-1 //最外周から1ドットずつ内側に移動
  i=i+1 //長方形の画像の次の色情報を格納する場所の行指定
end

この後さらに複数の長方形に展開した画像を結合して長い円筒にカメラを突っ込んだような画像から、
円筒を唐竹割りしたような展開画像を作りたいけど良い方法有りますでしょうか。

301 :デフォルトの名無しさん:2015/11/07(土) 13:14:30.83 ID:zFF1fNmF

ハローワークでも、自動車系で、
matlabの募集をたまに見る

でも徐々に、R, matlabの仕事は、
Pythonへ置き換わっていくかも

481件をまとめました。
最新情報はこちら

タイトルとURLをコピーしました