MATLABプログラミング 質問箱 その3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/10/03(土) 09:01:48http://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/
0685デフォルトの名無しさん
2011/12/10(土) 19:22:54.40多分,何かのミスじゃない?
そのコードで通ると思うけど
ところで,下の行列があるとき,
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
各行の最大要素が格納されてる列番号を調べるにはどうすれば良い?
上だと,
1行目:3列目
2行目:3行目
3行目:4列目
2行目:3行目
って感じで・・・
0686デフォルトの名無しさん
2011/12/11(日) 08:04:55.58doc max
0687デフォルトの名無しさん
2011/12/11(日) 13:35:23.22ありがとう!
0688デフォルトの名無しさん
2011/12/11(日) 15:25:25.98matlabのウィンドウならzoomとか回転とか出きると思うんだけど,
当たり前だけど画像形式で保存するとそういう操作はできなくなってしまう
保存後,保存先でもzoomとか回転とか出来るようにするには
どういう保存の仕方がいいのだろうか・・・?
0689デフォルトの名無しさん
2011/12/11(日) 18:18:22.74.fig で保存するのではダメなの?
0690デフォルトの名無しさん
2011/12/11(日) 23:38:54.450691デフォルトの名無しさん
2011/12/12(月) 23:57:59.22例えば a*x^2+b*y^2-1=0 のaとbが可変、みたいな
0692デフォルトの名無しさん
2011/12/13(火) 00:15:03.970693デフォルトの名無しさん
2011/12/13(火) 23:32:45.95これは一度変数に入れなければならないのでしょうか。
例としては、
hoge=eye(10);
hoge=hoge(:, 8:10);
を一度hogeに入れずに一部分を抽出したいということです。
0694デフォルトの名無しさん
2011/12/13(火) 23:42:09.93simulinkもってねー
0695デフォルトの名無しさん
2011/12/14(水) 22:31:46.80arrayfunやmat2cell/cellfunを駆使すれば出来る場合があるが、
Matlabにあまりそういうワンライナーを推奨していない気がする
0696デフォルトの名無しさん
2011/12/15(木) 22:33:17.71バイトみたいに個人レッスンをしてくれる人を探すことはできますか?
初心者で時間もないのに、Matlabを使いこなさなければいけないようになりました。
そういう人やサービスあるなら東京近辺がいいです。。
0697デフォルトの名無しさん
2011/12/16(金) 00:45:14.730698デフォルトの名無しさん
2011/12/16(金) 00:46:55.67割れてるからなw
0699デフォルトの名無しさん
2011/12/16(金) 01:17:34.36function part(array, varargin)
% Example: part(eye(10), ':, 8:10')
eval(['array(', [varargin{:}], ')']);
勧めないが
0700デフォルトの名無しさん
2011/12/17(土) 06:24:18.19ところでプログラミングが初めての後輩に入門書を買ってもらおうと思ったら良い和書が無かった。
0701デフォルトの名無しさん
2011/12/27(火) 12:45:46.620702デフォルトの名無しさん
2011/12/30(金) 15:40:02.83.matファイルの関連付けはAccessになっています.
0703デフォルトの名無しさん
2011/12/31(土) 10:07:22.321)拡張子を .m にする
2)octave から
souce hoge.m
とするか、hoge.mがカレントディレクトリにあれば単に
hoge
とする。
0704デフォルトの名無しさん
2012/01/01(日) 09:58:13.100705デフォルトの名無しさん
2012/01/04(水) 21:59:53.04アスキーで保存するのがよろしい
0706デフォルトの名無しさん
2012/01/04(水) 22:00:28.52http://www.amazon.co.jp/MATLAB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E4%B8%8A%E5%9D%82-%E5%90%89%E5%89%87/dp/4434155911
0707デフォルトの名無しさん
2012/01/07(土) 20:18:23.29以下のサイトのようなグラフが得られるはずですが、得られるグラフが違ったものに
なってしまいます。
http://www.geatbx.com/docu/fcnindex-01.html#P247_13252
私が書いたコードは以下の通りです。
[x,y] = meshgrid(-2:0.1:2,-2:0.1:2);
z = (4 - 2.1 * (x.^2) + 1/3*(x.^4))*(x.^2)+x.*y+(-4+4*(y.^2)).*(y.^2);
figure(1);
surf(x,y,z)
figure(2);
contour(x,y,z,32)
どなたか原因をご教授願えれば幸いです。
0708デフォルトの名無しさん
2012/01/07(土) 23:12:10.28Matlabに出力として特定のキーを押したのと同じ動作をさせたいのですがどうすればいいでしょうか。
実験で使うのですが、Matlabは非アクティブ状態で回しておき、
もう一つ他のプログラムをキー入力を受け付けられるようにアクティブ状態で待機させておこうと思っています。
どなたかわかる方がいましたらご回答お願いします。
0709デフォルトの名無しさん
2012/01/08(日) 01:16:00.690710デフォルトの名無しさん
2012/01/09(月) 14:39:24.88そのページに書いてある数式まちがってない?
http://www.it.lut.fi/ip/evo/functions/node26.html
のやつでやったら似たような結果になった。
[x,y] = meshgrid(-1.9:0.1:1.9, -1.1:0.1:1.1);
z = (4 - 2.1 * x.^2 + x.^4 / 3).*(x.^2) + x.*y + (-4 + 4*(y.^2)).*(y.^2);
surf(x,y,z);
view(30,45);
0711デフォルトの名無しさん
2012/01/14(土) 20:09:55.82もし、n=5であれば、5つの図を出したいのですが、
上記の場合ですと、1つ目の図はプロットされていますが、
2つ目以降のグラフは、grid とtitleなどが表示された図が表示されるだけで
プロットされてません。
なお、xx1やxx2はちゃんと値が入っているので数字的ミスはまったくないです。
forで回すのは、figureを作成するうえでやめたほうがいいんでしょうか?
よろしくお願いします。
0712デフォルトの名無しさん
2012/01/14(土) 20:10:29.81t=0:dt:t;
figure(i)
subplot(1,3,1)
plot(t,xx1(i,:))
grid on
title('Displacement-time')
xlabel('time')
ylabel('displacement')
subplot(1,3,2)
plot(t,xx2(i,:))
grid on
title('Velocity-time')
xlabel('time')
ylabel('Velocity')
subplot(1,3,3)
plot(t,xx3(i,:))
grid on
title('Acceralation-time')
xlabel('time')
ylabel('Acceralation')
hold on
end
0713デフォルトの名無しさん
2012/01/14(土) 20:57:46.71t=0:dt:t;
↑
これ、tに値を入れる前にtを使ってないですか?
0714デフォルトの名無しさん
2012/01/14(土) 21:04:32.91返信ありがとうございます。
使っていないです。
使っていたとしてもtは書き換えられるので大丈夫かなとは思います。
0715デフォルトの名無しさん
2012/01/14(土) 21:36:16.16いや、t=0:dt:t;
っていう文は、文法的におかしいでしょ? ってこと。
Cで言うところの
int a;
a=a+1
みたいなもんで。(aの値は不定になる。
0716デフォルトの名無しさん
2012/01/14(土) 23:05:35.12ありがとうございました!
0717デフォルトの名無しさん
2012/01/18(水) 15:24:53.29figure(n)
。。。
end
とやり、figureをnまでひとつずつ別ウィンドウで表示させたいのですが、
どれがn番目のグラフかわかるようにしたいのですがその場合
どうすればいいでしょうか?
0718デフォルトの名無しさん
2012/01/18(水) 21:32:48.490719デフォルトの名無しさん
2012/01/19(木) 18:01:40.91具体的には
for k=1:n
figure(k);
何か描画
title(sprintf('Figure %d', k));
end
とするといいんじゃないかな。
0720デフォルトの名無しさん
2012/01/19(木) 20:29:52.01ある点Aからある1本の線の一番近い座標を求めたいのですがどうすれば良いでしょうか?
ちなみに線は直線とは限らず曲線の場合もあります。ですから一番近い座標が複数あることもありえます。
最短距離法の式や使い方がわからなくて困ってます。
よろしくお願いします。
0721デフォルトの名無しさん
2012/01/22(日) 12:41:09.42解決しました,ありがとうございます.
0722デフォルトの名無しさん
2012/01/26(木) 20:17:13.33行列をsaveしたときに行頭にスペースが出来てしまうんですがこれを作らない方法ありますでしょうか
0723デフォルトの名無しさん
2012/01/27(金) 09:33:01.80当方 Matlab も Octave も使っていますが、そういう現象は見たことがありません。
「行頭にスペースが出来る」という表現も曖昧で、いまいち要領を得ない。
save した行列の 1 列目が空白になってしまうのか、
あるいは文字列に限って一文字目にスペースが入ってしまうのか。
その問題の行列を作ったときの statement を書き、
行列をセーブしたファイルをアップロードして
スレ住人が直接チェックできるようにした方が、早期問題解決できると思います。
0724デフォルトの名無しさん
2012/02/05(日) 21:24:12.00TeXに貼り付けようと、eps形式にすると凡例の文字が凡例の枠(テキストボックス)から
はみ出してしまします。どなたか対処法をご存じないでしょうか。
よろしくお願いします。
0725デフォルトの名無しさん
2012/02/05(日) 21:28:34.960726デフォルトの名無しさん
2012/02/05(日) 21:32:54.43そのまま保存しています。この方法では問題があるでしょうか。
0727デフォルトの名無しさん
2012/02/05(日) 21:40:33.99ファイルが微妙に違う。
0728デフォルトの名無しさん
2012/02/23(木) 17:34:28.05x'(t) = (x(t))^2, x(3) = 1
をmatlabで数値計算で解いてみます。
解析的な解は x(t) = 1 / (t-4)^2 となります。
まず、
function xdot = diffeq(t,x)
xdot = [x(1); x(1).^2];
として、
tspan = [3, 0];
x0 = [1;0];
[t,x] = ode45('diffeq',tspan,x0);
を実行しました。すると若干、解析的な解である x(t) = 1 / (t-4)^2 とは
異なった数値になってしまいます。私のプログラムが間違っているのでしょうか?
それとも、こんなものなのでしょうか?
それから、output のxは行数が2になっていますが、2行目の列ベクトル
x(:, 2) には何が入っているのでしょうか?初期値x0をスカラーにするとエラーが
返され、x0の2番目の要素を変えると、x(:, 2) の値も変わってきます。
0729デフォルトの名無しさん
2012/02/23(木) 23:50:58.50x'(t) = (x(t))^2, x(3) = 1 なら
解析解は x(t) = -1/(t-4)
diffeq は
xdot = x.^2;
じゃないの?
0730728
2012/02/24(金) 09:24:49.51式をまちがって書いてしまいました。
function diffeq のほうをおっしゃるとおりに書き直したらうまくいきました
ありがとうございます。
0731デフォルトの名無しさん
2012/03/17(土) 16:06:03.390732デフォルトの名無しさん
2012/03/18(日) 01:05:58.11OKでっす
0733デフォルトの名無しさん
2012/03/18(日) 09:53:06.61データ解析ツールoctaveを語ろう Part 2
http://toro.2ch.net/test/read.cgi/unix/1256735581/
こっちへ
0734デフォルトの名無しさん
2012/03/18(日) 23:04:49.50思いゆつくのは、一旦、応答をテキストに書きだしてfftすることぐらい。
他に方法あればご教示願います。
0735営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 21:23:27.010736営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 11:04:45.070737営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 18:47:00.29axisはどうやってやるんだろう?片面しか効かないけど・・・setとか使うのかな・・・
0738デフォルトの名無しさん
2012/04/23(月) 10:04:45.310739デフォルトの名無しさん
2012/04/23(月) 16:14:37.34x = [-1, 0, 0, 1];
y = [ 0, 0, 1, 1];
plot(x, y);
って感じでいけない?(今手元にMatlabなくて検証してないけど、できなかったらスマン(´・ω・`))
0740デフォルトの名無しさん
2012/04/26(木) 03:25:46.420741デフォルトの名無しさん
2012/05/01(火) 13:16:49.11どうやって作るのでしょうか。
forやarrayfunで出来ることは出来るのですが、
並列化されないためか、遅いです。
0742デフォルトの名無しさん
2012/05/01(火) 13:51:21.300743デフォルトの名無しさん
2012/05/01(火) 15:08:10.56stairsでいいんでないか?
0744デフォルトの名無しさん
2012/05/01(火) 22:29:28.61なんで遅いと思ったの?
0745デフォルトの名無しさん
2012/05/03(木) 17:24:56.720746デフォルトの名無しさん
2012/05/09(水) 14:49:27.86C(i)=max(table(table(:,:,2) == x2(i)) );
end
とすると
??? Improper assignment with rectangular empty matrix.
というエラーが出ます。
わからないのは、for文を回さずに、
C(1)=max(table(table(:,:,2) == x2(1)) );
という風にコマンドラインで1つずつやっていくと1〜length(C)までちゃんと出るんです。
forやwhileなど、繰り返し文に入れるとエラーが起きてしまいます。
どうしてでしょうか?
0747デフォルトの名無しさん
2012/05/09(水) 16:14:03.91table(table(:,:,2) == x2(i))
が空だった時にエラーが出るみたいです!。
0748デフォルトの名無しさん
2012/05/09(水) 21:03:11.84ハミング窓で窓掛けしたいのですが
----------------------------------------------
Fs = 48000;
FqA = 440;
FqB= 880;
time = Fs / 10;
n = 1:time;
tone(n) = 1 * sin (2 * pi * FqA * (n-1) / Fs);
n = time:Fs;
tone(n) = 0;
tone = repmat(tone, 1, 3)
n = 3 * Fs + 1:6 * Fs;
A = [ones(1, Fs) linspace(1, 0, Fs * 2)];
tone(n) = A .* sin (2 * pi * FqB * (n-1) / Fs);
soundsc(tone, Fs);
liner(n) = (n-1) / time;
tone_win(n) = 0.5 + 0.5 * cos (pi / tone(n) .* liner );
soundsc(tone_win, Fs)
-------------------------------------------------------------
tone_win(n) = 0.5 + 0.5 * cos (pi / tone(n) .* liner );
で次元が合わないとエラーを吐いてしまいます。
MATLAB初心者で窓掛け自体をしっかりと理解していないのもありますが
上手く次元を合わせられないのですがどう改変すればいいですか?
0749デフォルトの名無しさん
2012/05/10(木) 22:42:12.64ハミング窓をかけるのは、音圧をフェードイン・アウトさせる目的?
0750デフォルトの名無しさん
2012/05/13(日) 00:07:25.66どこにもこれから質問するものに関連するものがなかったのでここで質問させていただきます。
今現在研究で(大学生4年です)解析をしています。
解析手法としては線形加速度法という陰解法を使用していますが、
この手法の欠点としては、ステップ間隔を短くしなければなりません。
実際研究で使う地震波は、100秒もあり、扱う対象のものは
固有円振動数だけで330個、その中の最小のものより1/60程度にしなければ
なりません。そうしなければ、解は拡散してしまうからです。
そこで、0.0005秒間隔で100秒までとなると20万ステップしなければなりません。
構造解析のソフトウェアではそれにどれだけいったいかかるのか
図ったことはありませんが、最適化ですのでこれを少なくとも100回は回していかなければ
なりません。線形加速度法で扱う行列は、330行列。。。
この前0.0005秒間隔で20000ステップやるのですら、
1時間かかていました。。 20万ステップですから単純計算で
一回終えるのに10時間。これが最低でも100回回さなければならないため、
1000時間かかってしまいます。
そこで、解析手法を変えようと思っているのですが、
どの方法が適切でしょうか?何卒ご協力お願い申し上げます
0751デフォルトの名無しさん
2012/05/13(日) 00:48:34.950752デフォルトの名無しさん
2012/05/13(日) 23:30:13.49それがダメなら海外の研究者にメールしよう
0753デフォルトの名無しさん
2012/05/15(火) 18:00:24.32tone_win(n) = 0.5 + 0.5 * cos (pi ./ tone(n) .* liner(n));
とすれば、とりあえず通るみたいだけど、確かに音が歪みますね。
tone_win = (0.5 + 0.5 * cos (pi .* liner)) .* tone;
なら、フェードアウト部分がエコーっぽく装飾される。
plot(tone_win) で確認すればよくわかる。
0754デフォルトの名無しさん
2012/05/16(水) 06:31:22.590755デフォルトの名無しさん
2012/05/16(水) 12:17:00.24nの使い方が変なので左辺と右辺の長さが合ってない
n = 1:time;
n = time:Fs;
n = 3 * Fs + 1:6 * Fs;
どんどん変わってるからliner(n)の長さがおかしくなってる
窓掛けはcos関数の中にtoneを入れちゃダメだろ…
最初の
soundsc(tone, Fs);
まではとりあえず動くようなので
x = 0:length(tone) -1;
hann_window = 0.5 - 0.5 * cos(2 * pi * x / length(tone));
tone_win = tone .* hann_window;
soundsc(tone_win, Fs)
ま、普通はこういう窓のかけ方はしないんだけどな
エスパー回答なんで質問の意図と違ってるかも知れん
0756デフォルトの名無しさん
2012/05/16(水) 19:17:39.770757デフォルトの名無しさん
2012/05/16(水) 23:45:07.180758デフォルトの名無しさん
2012/05/17(木) 00:21:09.310759デフォルトの名無しさん
2012/05/17(木) 18:39:28.45今メモ帳にあるデータを、アルゴリズム上で格納したいのですが、
以下のようにしたいです。
加速度
0.01 0.02 0.01 .....約10万行......
0.01 0.02 0.01 .....約10万行......
0.01 0.02 0.01 .....約10万行......
.
.
330行
数字は任意です。
データとしては、上からi=1:1:10万として
下のように格納していきたいです。
for i=1:10万
i=i+1;
あるデータ=-----------;
格納(i,あるデータ)
end
としていきたいです。
あるデータは、1行*330行列になっています。
また、加速度という文字も最初の1列目に入れたいため、
i=i+1;としました。
0760デフォルトの名無しさん
2012/05/17(木) 18:51:16.31./ニYニヽ
r、r.rヽ. / (0)(0)ヽ
r |_,|_,|_,|/ ⌒`´⌒ \ で?っていう
|_,|_,|_,|_,| , -) (-、.|
|_,|_,|_人 (^ iヽ__ ノ l |
| ) ヽノ | `ー'´ /
| `".`´ ノ
入_ノ
\_/
/
/
0761デフォルトの名無しさん
2012/05/17(木) 18:53:15.98何卒宜しくお願いします。
0762デフォルトの名無しさん
2012/05/17(木) 18:58:50.15a = '加速度'
テキストファイル読みたけりゃdlmread関数とか
0763デフォルトの名無しさん
2012/05/17(木) 19:03:46.29fprintが調べたら出てきたのですが、使い方も複雑な説明の仕方でわかりませんでした。
0764デフォルトの名無しさん
2012/05/17(木) 19:26:33.18一つの変数に文字と数字を混在させるにはcellを使うが、もし意味がわからないなら
文字を入れるのは無理だから数字だけにしたほうがいい
ファイルの読み込みはcsvreadかdmlreadを調べて分からなきゃご愁傷様
0765デフォルトの名無しさん
2012/05/17(木) 22:05:46.120766デフォルトの名無しさん
2012/05/17(木) 23:33:27.65文字列と数を1つの行列で扱うな
0767デフォルトの名無しさん
2012/05/18(金) 00:12:06.07dmlreadなどで調べなおしてきます。
また、自分がメモ帳といったのは、再度そのデータを
matlab上でグラフにするために必要だからメモ帳を選択しました。
メモ帳での書き出しはできます
0768デフォルトの名無しさん
2012/05/18(金) 00:52:53.42saveでワークスペースを保存したほうがいい
0769デフォルトの名無しさん
2012/05/18(金) 11:04:49.31>>759を見る限りまともに書き出されてない
0770デフォルトの名無しさん
2012/05/18(金) 13:09:58.18メモリー不足になってしまうからです。
上のような行列が3個もありそれらすべてを一回、ある行列に格納していって(for - next の中で)
そのあとにplotしていきます。
saveでも大丈夫なんでしょうか?
0771デフォルトの名無しさん
2012/05/18(金) 14:14:14.56100000 x 330ならデフォの倍精度でも配列の大きさは200MB強くらいしかいかないだろ
まぁ、dlmreadは範囲指定できるからforループ内でファイルの一部だけ読みだすのはできるが
matlabにとっては一番オーバーヘッドが大きい使い方なので普通はやらない
0772デフォルトの名無しさん
2012/05/23(水) 13:28:59.63その各要素の高い順に番号をつけたいのですが、そんなことできますか?
たとえば、
a=[ 1 3 5.5 2 4 ]であったら、
ans= [ 5 3 1 4 2 ]
と要素の高い順に番号をつけてくれる。。。というかんじです。
0773デフォルトの名無しさん
2012/05/23(水) 17:22:21.04で、Iを見ると良いよ。
0774デフォルトの名無しさん
2012/05/24(木) 02:19:56.75実際のところどうなの?
速くなるの?
0775デフォルトの名無しさん
2012/05/25(金) 15:46:21.603次元の図上でその各点の強度を色とかで表現する方法ってありますか。
うまい方法があれば教えてください。お願いします
0776デフォルトの名無しさん
2012/05/25(金) 16:27:48.480777デフォルトの名無しさん
2012/05/25(金) 16:29:15.632Dに投影はできるんだが
0778デフォルトの名無しさん
2012/05/25(金) 18:20:52.95こういうののこと?
http://www.okada.jp.org/RWiki/?%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%BB%B2%B9%CD%BC%C2%CE%E3%BD%B8%A1%A7%C4%BB%E2%D7%BF%DE
0779デフォルトの名無しさん
2012/05/25(金) 18:27:01.81[1 2 5 7 5 6]
と行だけに変換する関数ってありますか?
宜しくお願いします。
0780デフォルトの名無しさん
2012/05/25(金) 18:42:28.53reshape
0781デフォルトの名無しさん
2012/05/25(金) 22:07:06.58a(:).'を良く見かける
0782デフォルトの名無しさん
2012/05/28(月) 00:38:30.23線の色について非常に困っています。
x=[10×2000]の行列があって、
これを、tの軸と一緒にプロットしたいのですが、
plot(t,x)とやってしまうと、
どれが1,2,3と8,9,10行の成分なのかわからなくなります。
これは、1〜7番目までは違う色で、8番目からはまた同じ色が使われてしまうからです。
この問題を解決するためにどのような手段を講じればよいでしょうか?
何卒よろしくお願い致します。
0783デフォルトの名無しさん
2012/05/28(月) 15:45:37.200784デフォルトの名無しさん
2012/05/29(火) 00:36:35.87■ このスレッドは過去ログ倉庫に格納されています