MATLABプログラミング 質問箱 その3at TECH
MATLABプログラミング 質問箱 その3 - 暇つぶし2ch112:デフォルトの名無しさん
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
さらにそのページにある「別ファイル内のメソッド」リンクを辿った先に、
ずばり答えが書かれてます。

389:Matlab でもクラス記述できるでしょうか
11/07/28 05:19:06.70 BE:1233025463-2BP(0)
>>実装は可能というのが最終的な答えですよね? 実装するしないはともかくとして。

  (P^5 + P^3+1)%(P^2+P+1)
のようにユーザー側で演算子に新しい意味を与えられるかは言語仕様による。演算子
の代わりに addBool(..) などの関数呼び出しで実装するのならば、可読性が犠牲に
なる。実装する意味がない。そんな実装をするより macaulay2呼び出しのほうがまし。

>>結局好みの問題になるかと思うのですが、
殆どの人間が Matlab のクラスを使わないのならば、Matlab のクラス仕様は糞だと言える。



390:デフォルトの名無しさん
11/07/28 10:13:20.83
>>388
既に読んでいたのですがどうやら勘違いしていたようです。
プロパティみたいに function なしでクラス定義すればいいんですね。
一応成功したコードを書いておきます。ありがとうございました。

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

  FuncY(obj)
end

home/@ClassNameA/FuncY.m
function FuncY(obj)
 disp('Y')
end

391:デフォルトの名無しさん
11/07/30 21:08:08.60
後出しじゃんけんのプログラムを作成したいのですが、グー・チョキ・パーをランダムに選択する文が思い浮かびません。
グーが1、チョキが2、パーが3に当てられ、まずコンピュータの手を表示してから自分の手を入力するというプログラムです。
Cだとcomp=rand()%3+1で出来るのですがMATLABではどのように表現すればいいでしょうか?

392:デフォルトの名無しさん
11/07/30 21:34:19.79
>>391
C の rand 関数を使った実装がそこまで具体的に分かってるなら
matlab の rand の help を見れば一発で解決すると思いますが、
より直感的に comp = randperm(3)(1); みたいなのもアリです。

393:デフォルトの名無しさん
11/07/30 21:53:29.55
>>392
helpを実行したら解決しました!
参考書を見ても載っていなかったんで、助かりました!ありがとうございますm(__)m

394:デフォルトの名無しさん
11/07/31 11:35:23.38
いちばんラクなのはrandiかも。

395:デフォルトの名無しさん
11/08/05 11:52:48.09
突然違う話題ですみませんが、
現在、matlabを独学で勉強しています。


以下のような関数がそれぞれどのようなグラフとなるかをmatlabにより出力したいと考えています。
a_±(x) = ±sinθcos(θ/2) * ( cosh(xsinθ) / cosh(2xsinθ)+cosθ ),
b_±(x) = ±sinθsin (θ/2) * ( sinh(xsinθ) / cosh(2xsinθ)+cosθ )

xの値の範囲は-20 < x < +20、θの値の範囲は0 < θ < πです。
xを-20から+20へと変化させた時の波形を出力しようと考えています。
しかし、独学のせいかプログラムが全く書けません(涙)
詳しい方やわかる方、教えて頂けると助かります。




396:デフォルトの名無しさん
11/08/05 13:39:19.23
>>395
いきなり完全なプログラムを書こうとしてるから詰まってると見た。

例えば
>> x = -20
>> theta = 0
>> sin(theta)
>> cos(theta / 2)
>> cosh(x * sin(theta))
>> for x = -20:20, x, end

みたいな簡単なステートメントを実行しながら、
まずは代入の記法や、単一の関数で何が得られるかを確かめてみる。
そして、for ループの使い方みたいなものを断片的にでも理解してから
基本はボトムアップで試行錯誤しながら取り組むのが良いと思います。
不格好でも目的のプログラムは作れる筈。

397:デフォルトの名無しさん
11/08/05 17:23:54.79
>>396
θをpとし、一応作ってはみましたが…
matlabはもとよりプログラミング自体が初めてです。。
細かいところはダメだと思いますが、流れはこんな感じで大丈夫でしょうか?

for p=0:1/100:pi
for x=-20:1/100:20
a = ±sin(p)*cos(p)*( cosh(x*sin(p)) / cosh(2x*sin(p))+cos(p) );
b = ±sin(p)*sin(p)*( sinh(x*sin(p)) / cosh(2x*sin(p))+cos(p) );
plot(x,a);
plot(x,b);
end
end


398:デフォルトの名無しさん
11/08/06 01:06:54.19
>>395
形だけを確認したいんだったらMicrosoft mathematicsが便利

399:デフォルトの名無しさん
11/08/06 01:43:47.52
>>396
2重ループでxとθをそれぞれ変化させて、aとbの値を求め、
最後にx,a(もしくはb),θによる3次元のグラフを1つ出力するという方針
なのですが、plot3をどのタイミングで入れれば良いのかがよくわかりません。。
どなたかアドバイスお願いします・・・

400:デフォルトの名無しさん
11/08/06 01:57:31.74
>>399
全然違う
独学と言うが何という入門書を読んでる?
ほとんどの入門書に書いてあるはず
>>396の言うとおり、1つの本を決めて最初からサル真似して
打ち込んでいけばそのうち慣れる

401:デフォルトの名無しさん
11/08/06 02:29:54.36
>>400
「MATLAB ハンドブック」です。
>>399以外思いつく方法がなかったのですが・・・
やばいです。。

402:デフォルトの名無しさん
11/08/06 02:47:46.89
>>401
その本俺も持ってる。
ちゃんと真似て打ち込みながら読んでる?
全部やらなくても、Chapter 0, 1, 2,と
5の「グラフィックアニメーションテクニック」の部分だけで良い。
ちゃんとやれば1か月かからない

403:デフォルトの名無しさん
11/08/06 02:55:47.08
>>402
真似て打ち込んでいるのですが・・・
週明けには完成させないといけないので急いでいるのですが
詰まってしまいました。。

404:デフォルトの名無しさん
11/08/06 03:12:26.15
>>403
>>397を見る限り全然打ち込んでいるように見えんぞ
自宅にないならOctaveという無料のソフトでMatlabの練習が出来る

405:デフォルトの名無しさん
11/08/06 08:53:30.20
>>404
octaveで練習していますが、2つの変数を変化させて値を出したいのですが
上手くできません。。
a = ±sin(p)*cos(p)*~・・・
b = ±sin(p)*sin(p)*~・・・
なので
下のaとbの式の右辺の先頭にそれぞれ±1を掛けてグラフを描きたいのですが、
やり方がよく分かりません。。
愚問で申し訳ないのですが、どなたか参考例を教えて頂きたいです。。

p=0:0.01:pi
x=-20:0.01:20
a = sin(p)*cos(p)*cosh(x*sin(p)) / ( cosh(2*x*sin(p))+cos(p) );
b = sin(p)*sin(p)*sinh(x*sin(p)) / ( cosh(2*x*sin(p))+cos(p) );



406:デフォルトの名無しさん
11/08/06 09:40:52.49
規制で携帯から
とりあえずこんなんでいいの?

N = 100;

p = linspace(0, pi, N);
x = linspace(-20, 20, N);
[P, X] = meshgrid(p, x);

a = sin(P) .* cos(P/2) .* ( cosh(X.*sin(P)) ./ cosh(2*X.*sin(P) + cos(P)));


surfc(X,P,a);



407:デフォルトの名無しさん
11/08/06 21:41:25.24
>>405
宿題を丸投げしているあたり、
>>395の独学というのは嘘でちゃんと習ったんだろ?
話を聞いていない自分の責任じゃないのか。

その本のchap.2までちゃんと読んで打ちこめ
holdコマンドをちゃんと調べる

408:デフォルトの名無しさん
11/08/07 02:38:24.40
このスレってインストールできない学生や宿題できない学生のたまり場になりつつあるな

409:デフォルトの名無しさん
11/08/07 04:10:13.30
夏休みだから仕方ない

410:デフォルトの名無しさん
11/08/07 12:44:35.87
>>406
ありがとうございます。
皆さん申し訳ありませんでした。。

411:デフォルトの名無しさん
11/08/19 04:55:25.23
MATLABって何て読むの?
まっとらぶ?
まとらぼ?
めいっとらぶ?

412:デフォルトの名無しさん
11/08/19 09:26:33.93
>>411
マッチョラブ

413:デフォルトの名無しさん
11/08/19 11:33:40.59
>>411
MathWorks日本語版公式サイトだと
URLリンク(www.mathworks.co.jp)

「MATLAB (マトラボ / マットラブ) 」と併記してるのでこの両方が公式
ただし「ソースを表示」等でHTMLファイルを見ないと書いてない

414:デフォルトの名無しさん
11/08/19 14:44:57.39
マットラボって読んでたんだが、間違いなのか・・・

415:デフォルトの名無しさん
11/08/19 19:02:38.63
MATLAB Version 7.12 (R2011a)
Statistics Toolbox Version 7.5 (R2011a)

なのですが、Statistics Toolboxの主成分分析のサンプル(URLリンク(www.mathworks.co.jp))
してみたら、分散行列の1列、4列だけ符号逆で出てくる。

>> load hald
>> [pc,score,latent,tsqure]=princomp(ingredients)

pc =

-0.0678 -0.6460 0.5673 0.5062
-0.6785 -0.0200 -0.5440 0.4933
0.0290 0.7553 0.4036 0.5156
0.7309 -0.1085 -0.4684 0.4844


プログラミングの質問じゃない気がするけど、分かる方いたら宜しくお願いします。
サポートに連絡した方がいいのかな?

416:デフォルトの名無しさん
11/08/20 00:02:53.50
R2011評価版を入手。30日間の期限が切れた。
時計を戻した。使えるじゃん・・・。

417:デフォルトの名無しさん
11/08/20 00:44:25.84
お巡りさん、こっちです

418:デフォルトの名無しさん
11/08/20 17:43:32.17
>>415
PCA で出せる loading と score の符号は arbitrary なので問題ない。
各アプリケーション間でバラバラな上に、
同一のアプリケーションの違ったバージョンでもバラバラだったりする。



419:デフォルトの名無しさん
11/08/20 21:19:39.91
>417
ハックしてるわけじゃないから、問題ないのでは。

420:デフォルトの名無しさん
11/08/21 07:32:47.00
タイムパトロールに通報しといた

421:デフォルトの名無しさん
11/08/21 19:05:58.91
>>419
多分民事ですね。マジメにお金払ってる人が騒ぎたくなる気もわかりますが。

それにしてもmatlab高いよ。本体とほんの数種類のtoolboxで150万円なんて。
これと比較したらあのAdobe CS 5.5ですら安くみえます。

422:デフォルトの名無しさん
11/08/21 20:26:32.62
そんなこと言うならOctave使えばいいじゃん。

423:デフォルトの名無しさん
11/08/22 00:05:09.44
残念ながらオクターブじゃ仕事にならないんだよ…。matlabのような統合開発環境が必要。

424:デフォルトの名無しさん
11/08/22 09:12:01.37
Scilabとかもあるな
仕事なら経費と思うしかない
金が無いなら数式見てゴリゴリ書け

425:デフォルトの名無しさん
11/08/22 17:34:19.31
FreeMatでいいじゃん

426:デフォルトの名無しさん
11/08/22 19:41:04.44
>>424
>>425
ま、経費なんで痛くも痒くもないんですが、20万超えると承認もらうのが面倒。

matlabのいいところって、グラフをGUIで直感的にガンガン加工したのちに、.mファイルに変換して、次からは自動で描画させる事ができることろだと思うんです。もしmatlabからその機能がなくなったらOctaveに移行します。

427:デフォルトの名無しさん
11/08/22 21:20:22.64
>>418

ありがとうございました。
んんー、なるほどー。

428:デフォルトの名無しさん
11/08/24 14:30:24.72
クラス定義の中でプロパティの値を書き換えるとき
下のように書くと警告が出る上、xが空のままになるのですが
どのように書けばよいでしょうか?

classdef Class
  properties
    x
  end
  methods
    function this=Class()
      this.init();   % this.x=2 を代入する
      this.x     % ans = [ ] と表示される
    end
    function init(this)
      this.x=2;
    end
  end
end



429:デフォルトの名無しさん
11/08/24 18:53:42.80
自己解決しました。
参照渡しとなるように以下のような書き換えが必要だったようです。

classdef Class
  properties
    x
  end
  methods
    function this=Class()
      this = this.init();     % 変更
      this.x
    end
    function this = init(this)  % 変更
      this.x=2;
    end
  end
end

430:デフォルトの名無しさん
11/08/31 07:05:05.01
i行i列のu(i,j)という2次元配列を作って、それぞれに値を格納したんですが、
(iは1~100、jは1~100)

このu(i,j)という配列を3次元でグラフ化したいのですが、上手くいきません。

・surf(u);
・waterfall(u);

surf(u(1,:));

hold on
for i=2:1:100
surf(u(i,:));
end
hold off

いずれも上手くいきません。。
分かる方、教えて頂けたら助かります。


431:デフォルトの名無しさん
11/08/31 11:29:14.51
>>430
surf(1:100, 1:100, u);

1:100のところは自分の好きなように変えるべし。
0:99でもいいし、linspace(-pi, +pi, 100)とかでもいい。

432:デフォルトの名無しさん
11/08/31 15:44:01.31
ありがとうございます。
試してみたのですが、上手くいきませんでした。。ソースは以下の通りです。
1次元の熱伝導方程式について、以下のように差分法を用いて、時間変化に伴う温度分布をグラフ化しようとしました。

u=[];
t0=0; te=0.1; dt=0.01;
nx=9; x0=0; xe=1.0; dx=1.0/nx;

x=x0:1.0/(nx-1):xe;
u=sin(pi*x);

for i=2:1:te/dt
for j=1:1:nx
u(i,j)=1;
end
end
for i=2:1:te/dt
u(i,1)=0; u(i,nx)=0;
for j=2:1:nx-1
u(i,j)=u(i-1,j)+((dt)/(dx)^2)*(u(i-1,j+1)-2*u(i-1,j)+u(i-1,j-1));
end
end
plot(x,u);

時間変化による温度分布を見やすくするためにx軸をx(0~1.0)、y軸をt(0~0.1)、z軸をuの値として、3次元のグラフにしたいのですが、2次元のグラフでしか表現できません。。
どなたか分かる方、教えて頂けたらうれしいです。

433:デフォルトの名無しさん
11/08/31 21:39:56.88
「surf使うときはmeshgrid」を呪文のように唱えてる。仕組みは知らん。

まず
for i=2:1:te/dt
ってとこだけど、0秒をi=1にしてるわけだから
for i=2:1:te/dt+1
にしないと合わない。
で、あとは plot(x, u) の部分を下で置き換えたらできるはず。

t = t0:dt:te;
[X,T] = meshgrid(x,t);
surf(X,T,u);


まぁそのコードに関しては色々言いたいことあるんだけどね。
最初のforブロックはones使えよとか
i=a:1:b は i=a:b でいいじゃないかとか
スペースとかインデントとか

434:デフォルトの名無しさん
11/09/01 10:46:31.94
>>433
ありがとうございます。とても助かりました。
指摘も参考になりました。

数学的な質問になるかもしれないのですが・・・
432のu=sin(pi*x);の部分を
u=sin(pi*x)+sqrt(-1)*cos(pi*x); ←これは自分が適当につくりました
と、虚数を含む式として走らせてみたところ、
---------------------------------
??? Error using ==> surf at 78
X, Y, Z, and C cannot be complex.

Error in ==> question at 28
surf(X,T,u);
---------------------------------
というエラーが出てしまいました。
初期条件のuや、
for文の中のu(i,j)の式に、例えば
u(i,j)=(1/sqrt(-1)) * (u(i-1,j)+((dt)/(dx)^2)*(u(i-1,j+1)-2*u(i-1,j)+u(i-1,j-1)));
のように虚数が含まれる場合はどのような手順で解を導けば良いのでしょうか?
課題や研究ではなく、単純に疑問に思いました・・・




435:デフォルトの名無しさん
11/09/01 14:00:42.44
>>434
複素数ってのは描画するとしたら複素平面上にしかできないわけで、
xとtを軸とした3次元プロットは手書きしようとしてもできないでしょ。

自分は振動の分野の人間だから
複素数は時間領域の場合実部をとる。(結局u=sin(pi*x)になる。)
ちょっと問題設定がわからないからこれ以上はなんとも言えないな。

ちなみにsqrt(-1)はMatlabの場合1iで書けるよ。
u=sin(pi*x)+1i*cos(pi*x);

436:デフォルトの名無しさん
11/09/02 09:39:06.37
>>435
ありがとうございます。
複素数を実部と虚部に分けて考えるべきでしょうか。
例えば
u(t,x)=sin(pi*x)+1i*cos(pi*x)=a(t,x)+1i*b(t,x)
として、
a(t,x)とb(t,x)の時間変化に伴う値の変化を調べるのがいいのかなと。
u(t,x)の初期条件や境界条件からa(t,x)とb(t,x)のそれぞれの条件も出てくると思いますし。




437:デフォルトの名無しさん
11/09/02 11:14:58.46
>>436
まぁ少なくとも線形な方程式なら問題なくそれで解けるよね。
ただ複素数にして何を知りたいのかがよくわからないから
何とも言えないところではある。

438:デフォルトの名無しさん
11/09/03 19:27:45.28
>>437
線形でない場合は違うのでしょうか??・・・^^;
線形でない場合って・・・例えばどんな場合でしょうか・・・?
無知ですみません。。

439:デフォルトの名無しさん
11/09/04 11:10:03.66
>>438
単純な例として
線形:  y = 2*x
非線形: y = x*x
の場合、x = a + ib を代入したときに
非線形の場合成立しないでしょ。
正しくは
 y = a^2 - b^2 + 2i*a*b
なのに、実部と虚部別に計算すると
 y = a^2 + i*b^2
になる。

※非線形というのは1次式または0次式(線形)でない、という意味ね。念のため

440:デフォルトの名無しさん
11/09/04 12:40:33.68
教えていただきありがとうございます。勉強になります・・・
この機会なので、もう少し教えてください・・
例えば

i*(δu/δt)+i*(δu/δx)+u^2=0・・・(1)
っていう非線形の偏微分方程式があったとき、

u=u(t,x)、0≦x≦1、0≦t≦10
境界条件は (δu/δx)(t,0)=(δu/δx)(t,1)=0
初期条件は、u(0,x)=sin(πx)+i*x*cos(πx)
とした場合、


441:デフォルトの名無しさん
11/09/04 12:41:13.47
上の続き・・・


安易ですが、自分の解法の流れとしては・・・
まずはu=u(t,x)=a+ib=a(t,x)+i*b(t,x)、 (a,bは実数)として,
(1)に代入して実部と虚部を分ける?

-δb/δt - δb/δx + a^2 - b^2 = 0 ・・・(2)
δa/δt + δa/δx +2ab = 0・・・(3)

次にu(t,x)の境界条件や初期条件から、
a(t,x),b(t,x)のそれぞれの境界条件や初期条件を求める・・・

そして、(2)、(3)を解く・・・
(ここまでは合っていますでしょうか?^^;)


線形項については、時間変化に伴うa(t,x)とb(t,x)についての値の変化を見る・・・
非線形項のu^2については、u^2=(a+i*b)^2=a^2-b^2+2ibの、
実部(a^2-b^2)、虚部2bについて、それぞれ変化を見る・・・

何を知りたいのかは別にして、解析の流れとして
このように考えたのですが、おかしいでしょうか・・・?





442:デフォルトの名無しさん
11/09/06 23:10:27.46
すみません、取り込み中のところすみませんが、
matlabでコードを作って計算させるときに、
計算時間がえらく長くかかることあるじゃないですか?
で、何十分もかけた割にはあんまり有益なデータが取れなかったりして・・・

実際にmatlabを走らせる前に、だいたいの計算時間みたいなのを知ることって出来ないんしょうか?
厳密でなくても、だいたいでも結構です。

やり方などわかる方、教えてください。



443:デフォルトの名無しさん
11/09/07 07:31:34.26
profile
tic toc
でループの中とか時間のかかりそうな部分を計測して
ループの回数をかけるとか

444:デフォルトの名無しさん
11/09/07 15:52:49.54
matlab使う前に基本的なプログラミングからやり直したほうがいいと思う。
マクロ・スクリプトとして便利だけどライブラリ任せになるとツール頼みになりますよ。
matlabやoctaveてインタプリタだからプログラミングしても遅いと思うけど。

インタプリタだと、極端な話、例えばN88BASIC互換のインタプリタ言語をPentium4-3Ghzで動作させたものと
25MhzのSH2-7125のC/C++コンパイラでベンチとれば、SH2にあっさり負けますよ。
場合によっては1/10以上の差がありますから数値計算でプログラミングできない人は致命的ですよ。
ちょっとした電卓代わりなら良いですが、便利だからとクラスタでインタプリタ動かそうとしてる人はリソースの無駄遣いで、
そんなもの幾ら高速のンピュータでもリソースは足りませんよ。


445:デフォルトの名無しさん
11/09/07 16:41:16.93
>>444 は、いまどき珍しい原理主義者だなぁ。
例に挙げてるのもホントに極端なものだし。
「インタプリタだから何でもかんでも遅い」っていうのは、
頭が固くて、なおかつ自分でベンチとってないお年寄りの念仏でしかないよ。
Matlab は、コードの可読性と処理速度のバランス面で、たいへん優れている。

Matlab で致命的に遅いのはグラフィックスまわり。描画の方。レンダリング重すぎ。

446:デフォルトの名無しさん
11/09/07 18:01:15.48
質問よろしいでしょうか?
mex -setup のコマンドを用いてコンパイラの設定を行おうとしたところ,
カスペルスキーから警告されました.そして,操作を許可したのですが,その
直後にMatlabが落ち,起動しなくなってしまいました.
mex -setup のコマンドが正しく実行されない理由についてお教え下さい.
宜しくお願いいたします.

447:デフォルトの名無しさん
11/09/08 02:15:46.63
C/C++でライブラリに頼らず書けってのか。
プログラミング初心者にそんなこと言ってたら
主眼の研究に取り掛かるのが
いつになることやら。

デバッガ、lint、プロファイラ、お手軽グラフィックが完備した
マトラボでさっさと研究を進めるべき。

マトラボでプログラミングに慣れて来たら、
Cなりアセンブリ言語なりCPUアーキテクチャなり
勉強すればよい。


448:デフォルトの名無しさん
11/09/08 09:17:49.09
MATLABを使用する理由って、プログラムがよくわからなくても高度な計算がしたいってのが主な理由だしなぁ
学者や研究者がプログラミングも出来るにこしたことは無いけど、プログラマを目指す訳じゃないんだし、後回しで良いと思うけどね
つーかプログラミング出来るなら、自分でゴリゴリ数式書いたほうが良いし

>>446
カスペルスキーからどんな警告が出たのかくらい書け
とりあえず、カスペルスキーを外してから再度実行してみろ

449:デフォルトの名無しさん
11/09/08 11:32:55.02
URLリンク(odin.fi-b.unam.mx)
を参考にしながら、

δa/δt=-δa/δx-b(c^2+d^2+a^2+b^2);
δb/δt=-δb/δx+a(c^2+d^2+a^2+b^2);
δc/δt=δc/δx-d(a^2+b^2+c^2+d^2);
δd/δt=δd/δx+c(a^2+b^2+c^2+d^2);
(初期条件を適当にセットし、境界条件はノイマン条件としました)
という方程式を解こうとおもい、以下のようにコードを作ってみましたが、走らせると

??? Error using ==> solver5>pdex4pde
Too many input arguments.

Error in ==> pdepe at 259
c = feval(pde,xi(1),t(1),U,Ux,varargin{:});

Error in ==> solver5 at 7
sol=pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);
このようなエラーが出てしまいます・・・
どなたか、改良していただけると助かります・・

以下が作ったコードです・・

450:デフォルトの名無しさん
11/09/08 11:35:04.74
function solver5
m=0;
x=0:0.1:10;
t=0:1:1000;
sol=pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);
u1=sol(:,:,:,:,1);

function [c,f,s] = pdex4pde(x,t,u)
c=[1;1;1;1];
f=[-1;-1;1;1] .*u;
a= -u(2)*( u(3)*u(3)+u(4)*u(4)+(1/2)*( (u(1)*u(1)+u(2)*u(2)) ) );
b= u(1)*( u(3)*u(3)+u(4)*u(4)+(1/2)*( (u(1)*u(1)+u(2)*u(2)) ) );
c= -u(4)*( u(1)*u(1)+u(2)*u(2)+(1/2)*( (u(3)*u(3)+u(4)*u(4)) ) );
d= u(3)*( u(1)*u(1)+u(2)*u(2)+(1/2)*( (u(3)*u(3)+u(4)*u(4)) ) );
s=[a;b;c;d];

function u0=pdex4ic(x)
if 4 <= x && x < 6
u0=[0.8;-0.2;-0.8;0.2];
elseif 6 < x && x <= 8
u0=[0.8;0.2;-0.8;0.2];
else
u0=[0.8;0;-0.8;0];
end


function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)
pl = [0;0;0;0];
ql = [1;1;1;1];
pr = [0;0;0;0];
qr = [1;1;1;1];


451:デフォルトの名無しさん
11/09/10 08:27:08.60
初歩的な質問で申し訳ないんですが
surfグラフをhold onして2つの面グラフの色を塗り分けたいと思ってます。

colormap([1 0 0])っていうふうにセットしてるんですが
2つ目のグラフの色で両方のグラフが染まってしまいます。
どうにかなりませんか?

452:デフォルトの名無しさん
11/09/14 01:32:47.55
parallel computing toolboxを使って分散処理を考えています。
forループをparforにして分散処理をさせる方法をとっています。
このとき例えば、

parfor n=1:5
tmp(n) = n;
end
ans = sum(tmp)/n

のようにparforループ内でparforループ変数ごとに求めた値をparfor外でまとめて計算したいのですが、
「テンポラリ変数tmpはparforループの後に使われますが、その値は確定性がありません」
とエラーが出て、プログラムを実行できません。
何か良い案はないでしょうか。

453:デフォルトの名無しさん
11/09/14 13:09:09.00
ないあるよ

454:デフォルトの名無しさん
11/09/14 14:07:14.98
ありますん

455:452
11/09/14 21:54:54.81
>>453-454
ありがとうございます。
おかげさまで解決しました。

456:デフォルトの名無しさん
11/09/16 03:25:44.17
以下のコードで、
フィルタをとおさない場合、信号とそれ以外のスペクトルは25dBあるのですが、
フィルタをとおすと、信号以外のスペクトルが盛り上がってきてしまいます。
遮断領域がフィルタの影響で落ちて、通過帯域はそのままであって欲しいのですが、
どういった理屈でこうなってしまうのでしょうか?

data_len = 120000;
data=0.5*sin(2*pi*1/30*(0:data_len-1));%1MHzの信号。30MHzサンプリング。
b=fir1(33,0.4);
data=filter(b, 1, data);
plot(log10(abs(fft(data)).^2));


457:デフォルトの名無しさん
11/09/19 21:40:16.71
それはMatlabのせいじゃなくて、フィルタってそんなもん。

458:デフォルトの名無しさん
11/09/20 10:30:56.56
計算した結果を変数エディタやグラフにすると10^-4よりも小さい値は0になるのがデフォですか?


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