スポンサーサイト [Edit]
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
Matlabの起動時に「初期化中」と出てなかなか立ち上がらない [Edit]
そんなときは,こちらをどうぞ.

MATLABの起動が遅く、数分程度掛かります。」

ようするに,Matlab以外でライセンスサーバ指定しているものがある場合,その取得になんらかの不具合があると時間がかかっちゃう,ということ.なのでMatlabのライセンスのみを見させるように変更して立ち上げれば,すぐに起動可能.

スタートメニューのショートカットから立ちあげているなら,そのアイコンのプロパティにて,ショートカットを以下のように変更すればOK.

"C:\Program Files\MATLAB704\bin\win32\MATLAB.exe" -c "C:\Program Files\MATLAB704\bin\win32\license.dat"

64bitマシンの場合は,win32->win64に変更のこと.

スポンサーサイト
[ソフトウェア]Matlab | 【2009-03-31(Tue) 14:27:44】 | Trackback:(0) | Comments:(0)
Matlabでfor文が遅い場合 [Edit]
Matlabはベクトル演算専門なので,C言語みたいなfor文を書くと,とんでもなく遅くなることがある.以下がその例.

clear;
Resolution = 16; % [bit]
Amplitude = 200; % [mV]
DC = 0; % [mV]
Vref = 320; % [mV]

Fin = 11; % 入力周波数 = (Fin/FFT_point)*Fs
FFT_Point = 128;
Des_Ratio = 128;

G1 = 1;
G2 = 1;
FB1 = 1;
FB2 = 1;

Total_Point = FFT_Point*Des_Ratio;
Coeff1 = 2*pi*Fin/Total_Point;

tic
t = [0:1:Total_Point-1];
Vsin = Amplitude*sin(t*Coeff1);
toc

V1 = G1*Vsin;

tic
% Vsin2 = zeros(Total_Point,1);
for i=1:1:Total_Point
Vsin2(i,1) = Amplitude*sin(i*Coeff1);
end
toc

VsinとVsin2は同じ値を持つ配列なんだけど,Vsinはベクトル演算でfor文を使ってない.このときのtic-tocは0.3ms程度なのに対し,Vsin2の生成には0.2秒もかかってる.およそ1000倍!

これ,どうやらVsin2の配列要素数をfor文の進行と同時に動的変更してるのがまずいらしい.

そこで,上のVsin2=zeros・・・っていうところを有効にして,for文計算するまえにあらかじめVsin2の配列要素数を確保しておくと,時間は1ms程度になった.

気をつけよう.

[ソフトウェア]Matlab | 【2008-02-26(Tue) 10:56:38】 | Trackback:(0) | Comments:(0)
図(Figure)に複数のグラフを割り当てたい [Edit]
ときは"subplot"を使う.subplot(mnp)で図が縦m,横nに区切られる.で,pってのは位置番号.m×nのどこにプロットするかってこと.たとえば,

subplot(321);

ってやるとこうなる.
20041118174142.gif

続けて

subplt(322);

でこう.
20041118174328.gif


よって,

subplot(326);

ならこうなる.
20041118174512.gif


プロットしたグラフは,subplotで指定した後,続けてplotコマンド等すればよい.つまり,

subplot(322),plot([0,2]);

ってすればこうなる.
20041118174759.gif



[ソフトウェア]Matlab | 【2004-11-18(Thu) 17:48:46】 | Trackback:(0) | Comments:(0)
ファイルを消したいときは [Edit]
delete('filename');
である.ファイル名が変数に入っているときは,
delete(filename);
となる.

あなたのクリック待ってます


[ソフトウェア]Matlab | 【2004-11-10(Wed) 14:35:30】 | Trackback:(0) | Comments:(0)
画像にSobelみたいなフィルタをかけたい [Edit]
ときは,imfilter,fspecialを使うとよい.たとえば,
121
000
-1-2-1
のようなフィルタならば,
filter = [1 2 1;0 0 0;-1 -2 -1];
imfilter(image_data,filter,'replicate');
とすればよい.ただし,ここでimage_dataは画像データとする.また,最後のreplicateとは,フィルタ演算時の境界条件で,画像エリア外の画素値はそれに最も近い画素値の値を使って処理する,というもの(と思う).

また,Matlabには標準で各種フィルタが存在し,これがfspecialで呼び出せる.上記フィルタは
filter = fspecial('sobel')
と同じで,これをつかうと
imfilter(image_data,fspecial('sobel'),'replicate');
となる.このほかにも
fspecial('laplacian');
fspecial('log');
等がある.

[ソフトウェア]Matlab | 【2004-11-10(Wed) 14:33:05】 | Trackback:(0) | Comments:(0)
あるディレクトリに存在するファイルを列挙するには [Edit]
files = dir('C:/')
とする.このとき,存在したファイル数はsize(files)で取得できる.さらに,各ファイル名は
for i=1:1:size(files)
files(i).name
end
で取得できる.

さらにつっこんで,正規表現にマッチしたファイルのみをリストしたいときは,
files = dir('C:/*.bmp')
とすればよし.

[ソフトウェア]Matlab | 【2004-11-10(Wed) 14:16:56】 | Trackback:(0) | Comments:(1)
文字列のif文マッチ [Edit]
Aという変数がTRUEだったら,という処理をするには,
A = 'TRUE';
if(A == 'TRUE')
では駄目.こうじゃなくて,
if(strcmp(A,'TRUE'))
とする.

[ソフトウェア]Matlab | 【2004-11-10(Wed) 14:08:10】 | Trackback:(0) | Comments:(0)
FC2カウンター
現在の閲覧者数:
リンク
RSSフィード
ブログ内検索
フリーエリア

カテゴリー
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。