% MATファイルに保存されたSimulinkの線形解析によって得られた線形化システム行列
% を呼出して周波数応答のデータを再現して保存する．
% 2006/06/03    MATLAB用

%MATファイル名
MatfileName =  'D:\06kadai_01\00_simulation\アクティブダンサ\060602_03simFrefToFact.mat';

%MATファイルの呼び出し
load(char(MatfileName));

SystemForBodeField = load(char(MatfileName));
%SystemForBodeField = load('D:\06kadai_01\00_simulation\アクティブダンサ\060603_04simFrefToFact.mat');
SystemForBodeFieldName = fieldnames(SystemForBodeField);
SystemForBode = getfield(SystemForBodeField,char(SystemForBodeFieldName));

%Simulaion結果のBode線図を記述する．
[MAG,PHASE,w]=Bode(SystemForBode);

f = w/(2*pi);

% ゲインのデータと位相のデータが3次元の行列データになっているので、
% 後で応答を表示するために、2次元の行列データに変換。
% (3次元データになっているのは、多入出力系に対応するため。)
[Ny,Nu,lw] = size(MAG);
MAG = reshape(MAG,[Ny*Nu lw]);
PHASE = reshape(PHASE,[Ny*Nu lw]);

figure(1)
subplot(2,1,1)
    semilogx(f,20*log10( MAG ))
    axis([min(f) max(f) min(20*log10(MAG)) max(20*log10(MAG))])
    title('')
    xlabel('Frequency[Hz]')
    ylabel('Gain [dB]')
    grid on
subplot(2,1,2)
    semilogx(f',PHASE)
    axis([min(f) max(f) min(PHASE) max(PHASE)])
    xlabel('Frequency[Hz]')
    ylabel('Phase[Deg]')
    grid on

f_response = [f 20*log10(MAG)' PHASE'];    
    
%計算結果のファイルへの出力
csvwrite('060603_02frq_sim.csv',f_response)
