自分用知識置き場

気まぐれで更新します。間違ってたらご指摘お願いします。

MATLABでモータの効率マップを作る

モータの研究をやっている人からMATLABでモータの効率マップの作り方を聞かれたのでその作り方をここに書いておこうと思う。

f:id:Shirase:20210917140549j:plain ↑こんな感じのグラフをつくる

環境

MATLAB R2020A

作り方

先ず、Excelなどで取得したデータをcsvファイルに変換する。 今回は以下のようなデータで効率マップを作る。 A列がスピード、B列がトルク、C列が効率のデータになっている。

f:id:Shirase:20210917141201j:plain

MATLABを開き、新規スクリプトを作成し、csvファイルがあるディレクトリに保存する。 そして以下のコードを記述する。

%モータの効率マップの作成

%データの読み込み
a = load('{ファイルの名前}.csv');

%各行のデータを格納
speed = a(:,1);
torque = a(:,2);
efficiency = a(:,3);

%等高線図用のデータの作成
x0 = min(speed) ; x1 = max(speed) ; nx = 1000 ;
y0 = min(torque) ; y1 = max(torque) ; ny = 1000 ;
x = linspace(x0,x1,nx) ;
y = linspace(y0,y1,ny) ;
[X,Y] = meshgrid(x,y) ;
Z = griddata(speed,torque,efficiency,X,Y);

%塗りつぶした 2 次元等高線図の作成
contourf(X,Y,Z);
%contourf(X,Y,Z,'LineStyle','none');

%軸の範囲指定
axis([300,2700,0,15])

%X軸ラベル
xlabel('Speed [min^-^1]')
%Y軸ラベル
ylabel('Torque [Nm]')
%カラーバーのラベル
c = colorbar;
c.Label.String = 'Efficiency [%]';

%色の変更
colormap(jet);
%colormapeditor;%colormapの編集

記入後、実行すると以下のようなグラフができる。

f:id:Shirase:20210917140549j:plain

注意

  • ファイルの名前は英語で先頭を数字にしない
  • 読み込むデータの名前を自分のものに変更する