【文章內(nèi)容簡(jiǎn)介】
new_system(mdl_name)。save_system(mdl_name)。open_system(mdl_name)。⒋在新建的模型中放入模塊⑴將模塊所在的庫(kù)的字符串39。Simulink/Commonly Used Blocks/39。存入庫(kù)變量block_lib_path中;將所需模塊種類放入變量lib_block_name中block_lib_path=39。Simulink/Commonly Used Blocks/39。lib_block_name={39。Gain39。,39。Integrator39。,39。Data Type Conversion39。,39。Saturation39。,39。Delay39。,39。DiscreteTime Integrator39。}。⑵選擇模塊數(shù)量;en_num:模塊像素位置的擴(kuò)大倍數(shù),錯(cuò)開(kāi)copy的兩個(gè)模塊,視覺(jué)上識(shí)別模塊block_type_num=length(lib_block_name)。blocks_num=5。en_num=500。⑶for循環(huán),實(shí)現(xiàn)模塊的分布:同一個(gè)種類的模塊不同copy分別存放如模型的不同位置,五次循環(huán),實(shí)現(xiàn)10個(gè)模塊的copyfor ii=1:blocks_numend①創(chuàng)建一個(gè)1*1隨機(jī)數(shù),從五個(gè)模塊索引中隨機(jī)產(chǎn)生一個(gè)整數(shù),選擇一個(gè)種類ind=randi(block_type_num,[1 1])。②字符串拼接模塊全名,得到源模塊和目標(biāo)模塊,add_block得到每一個(gè)unique的模塊名稱src_str=strcat(block_lib_path,lib_block_name(ind))。dst_str=strcat(mdl_name,39。/39。,lib_block_name(ind))。③獲取第一個(gè)模塊的位置句柄,pos+en_num*rand產(chǎn)生第二個(gè)模塊的位置句柄(大小不變,位置起點(diǎn)變化),完成copyblock_handle=add_block(src_str{:},dst_str{:},39。MakeNameUnique39。,39。on39。)。pos=get_param(block_handle,39。position39。)。 add_block(src_str{:},dst_str{:},39。MakeNameUnique39。,39。on39。,39。position39。,pos+en_num*rand)。⒌模塊端口屬性配置回調(diào)函數(shù)ConnectionCallbackblocks_handle=find_system(gcs,39。findall39。,39。on39。,39。type39。,39。block39。)。⑴find_system找到10個(gè)既存模塊的句柄放入數(shù)組blocks_handle(10*1)中for ii=1:blocks_num*2end⑵獲取blocks_handle屬性,再獲取模塊端口句柄prop=get(blocks_handle(ii))。⑶每個(gè)模塊的設(shè)置ConnectionCallback,判斷是否匹配相連的兩個(gè)模塊set(,39。ConnectionCallback39。,39。delete_pair_blocks39。)。function delete_pair_blocks(port)persistent tport_prop=get(port)。line_prop=get()。src_bh=。dst_bh=。src_block=get(src_bh)。dst_block=get(dst_bh)。if strcmp(,) disp(39。You find one