flag_set = readtable('Flag_set.xlsx');
flag_num = size(flag_set, 2) - 1;
flag_name = flag_set.Properties.VariableNames;
flag_set.(i) = ismember(flag_set{:,i},'〇');
flag_array = table2array(flag_set) - 0;
modelname = 'Flg_set_model';
open_system(new_system(modelname));
add_block('simulink/User-Defined Functions/MATLAB Function', ...
[gcs '/MATLAB Function'], 'position',[250, 170, 320, 170 + numel(flag_name) * 50]);
block = find(sfroot, '-isa', 'Stateflow.EMChart', 'Path', [gcs '/MATLAB Function']);
str = ['function [' strjoin(flag_name(2:end)) '] = f(x)', 10, ...
' t = ', mat2str(flag_array), ';', 10, ...
' idx = find(t(:,1) == x, 1); % 重複は無いものとする', 10, ...
' idx = idx(1); % 重複が無い事を明示する為に追記', 10];
str = [str ' ' flag_name{i} ' = t(idx,' num2str(i) ');', 10];
add_block('simulink/Signal Routing/Data Store Memory', ...
[gcs '/' flag_name{i}], 'DataStoreName', flag_name{i}, ...
'position',[500, 100+i*50, 550, 130+i*50]);
add_block('simulink/Signal Routing/Data Store Read', ...
[gcs '/' flag_name{i} ' Read'], 'DataStoreName', flag_name{i}, ...
'position',[100, 270+i*50, 150, 300+i*50]);
add_line(gcs, [flag_name{i} ' Read/1'], 'MATLAB Function/1', 'autorouting', 'on');
add_block('simulink/Signal Routing/Data Store Write', ...
[gcs '/' flag_name{i} ' Write'], 'DataStoreName', flag_name{i}, ...
'position',[400, 100+i*50, 450, 130+i*50]);
add_line(gcs, ['MATLAB Function/' num2str(i-1)], [flag_name{i} ' Write/1'], 'autorouting', 'on');