Simulinkシミュレーションコマンドの応用
リセット中は、スクリプトでmdlモデルの実行を動的に制御します.スクリプトを作成する過程で、いくつかのコマンドが特によく使われます(open_system,find_system,set_param,get_param,close_system).ここでは、それらの使い方をまとめます. open_system
この関数の形式は多く、よく使われるものは次のとおりです.
sysで指定したシステムモデルまたはサブシステムウィンドウを開きます.例:
model='fir'; % モデル名%オープンモデルopen_system(model); find_system
この関数の使用方法:
sysがパス名またはパス名cell arrayの場合find_Systemは、検索したオブジェクトのパス名のcell arrayを返します.
sysがハンドルまたはハンドルベクトルである場合find_システムは、検出されたオブジェクトのハンドルベクトルを返します.
また、find_システムでは「SearchDepth」などの検索方法を設定できますが、これらの設定オプションを利用して、柔軟にオブジェクトを検索できます.例:
%パラメータを変更する必要があるモジュールQam_blocks=find_system(model,'lookundermasks','all','regexp','on','C','.*');
モジュールを深くカプセル化し、正規表現を使用して変数「C」を含むすべてのモジュールのパス名を検索できるようにする.blocksはcell arrayです. set_param
この関数の使用方法:set_param(object,paramName 1,Value 1,...,paramName N,Value)は、システムまたはモジュールパラメータの値を設定するために使用されます.
一般的に、多くのモジュールの同じパラメータに対して同じ値を大規模に設定する(多くのモジュールにパラメータCがあり、モデルシステム全体のCの値が一致するなど)、
一般的にはfind_を先に使いますシステムはこれらのモジュールの位置を見つけて、set_paramはこれらのモジュールのパラメータを対応する値に設定します.例:
%QAMマッピングパラメータfor temp=1:length(Qam_blocks)set_を設定param(Qam_blocks{temp},'C',num2str(C(c_m))); end
set_の場合param関数は、パラメータの値ValueNが一般的にstringタイプに変換されることに注意してください. get_system
この関数の一般的な使用方法:
paramValue = get_param(object, paramName)paramValues = get_param(objectCellArray, paramName)paramValue = get_param(objectHandle, paramName)paramValue = get_param(0, paramName)paramStruct = get_param(object, 'ObjectParameters')
paramCellArray = get_param(object, 'DialogParameters')
とset_paramに対応して、パラメータの値を取得します. close_system
この関数の使用方法:
この関数の形式は多く、よく使われるものは次のとおりです.
open_system('sys')
open_system('blk')
open_system('blk', 'force')
open_system('blk', 'parameter')
open_system('blk', 'mask')
open_system('blk', 'OpenFcn')
open_system('sys', 'destsys', 'replace')
open_system('sys', 'destsys', reuse')
sysで指定したシステムモデルまたはサブシステムウィンドウを開きます.例:
model='fir'; % モデル名%オープンモデルopen_system(model);
この関数の使用方法:
find_system(sys, 'c1', cv1, 'c2', cv2,...'p1', v1, 'p2', v2,...), 、 、 、 。
sysがパス名またはパス名cell arrayの場合find_Systemは、検索したオブジェクトのパス名のcell arrayを返します.
sysがハンドルまたはハンドルベクトルである場合find_システムは、検出されたオブジェクトのハンドルベクトルを返します.
また、find_システムでは「SearchDepth」などの検索方法を設定できますが、これらの設定オプションを利用して、柔軟にオブジェクトを検索できます.例:
%パラメータを変更する必要があるモジュールQam_blocks=find_system(model,'lookundermasks','all','regexp','on','C','.*');
モジュールを深くカプセル化し、正規表現を使用して変数「C」を含むすべてのモジュールのパス名を検索できるようにする.blocksはcell arrayです.
この関数の使用方法:set_param(object,paramName 1,Value 1,...,paramName N,Value)は、システムまたはモジュールパラメータの値を設定するために使用されます.
一般的に、多くのモジュールの同じパラメータに対して同じ値を大規模に設定する(多くのモジュールにパラメータCがあり、モデルシステム全体のCの値が一致するなど)、
一般的にはfind_を先に使いますシステムはこれらのモジュールの位置を見つけて、set_paramはこれらのモジュールのパラメータを対応する値に設定します.例:
%QAMマッピングパラメータfor temp=1:length(Qam_blocks)set_を設定param(Qam_blocks{temp},'C',num2str(C(c_m))); end
set_の場合param関数は、パラメータの値ValueNが一般的にstringタイプに変換されることに注意してください.
この関数の一般的な使用方法:
paramValue = get_param(object, paramName)paramValues = get_param(objectCellArray, paramName)paramValue = get_param(objectHandle, paramName)paramValue = get_param(0, paramName)paramStruct = get_param(object, 'ObjectParameters')
paramCellArray = get_param(object, 'DialogParameters')
とset_paramに対応して、パラメータの値を取得します.
この関数の使用方法:
close_system
close_system('sys')
close_system('sys', saveflag)
close_system('sys', 'newname')
close_system('sys', 'newname','ErrorIfShadowed', true)
open_system , Simulink 。
。
,Simulink :add_block,delete_block , 。
:
ebn0=10:2:30; % EbN0
C=5:8; % QAM ,C=6 128QAM, 。
model='fir'; %
% weight=[0.5];
% interp_option={'linear','gaussian','cubic spline','dft','general'}; %
interp_option={'general'}; %
error_fir=ones(length(interp_option),11);
% BER , linear BER, gaussian BER, cubic
% spline BER, dft BER, + BER
record_fir=cell(length(C),2);
% (C) BER
% C, error_isi_fir( ).
%
open_system(model);
%
Qam_blocks=find_system(model,'lookundermasks','all','regexp','on','C','.*');
EbNo_blocks=find_system(model,'RegExp','on','SearchDepth','1','EbNo','.*');
interp_blocks=find_system(model,'RegExp','on','SearchDepth','1','flag','.*');
for c_m=1:length(C)
for interp_m=1:length(interp_option)
% QAM
for temp=1:length(Qam_blocks)
set_param(Qam_blocks{temp},'C',num2str(C(c_m)));
end
%
for temp=1:length(interp_blocks)
set_param(interp_blocks{temp},'flag',interp_option{interp_m});
end
for ebn0_m=1:length(ebn0)
% EbN0
for temp=1:length(EbNo_blocks)
set_param(EbNo_blocks{temp},'EbNo',num2str(ebn0(ebn0_m)));
end
% model
sim(model);
error_fir(interp_m,ebn0_m)=ber_fir(1);
end
end
record_fir{c_m,1}=C(c_m);
record_fir{c_m,2}=error_fir;
end
% model
close_system(model,0);