How can I change block parameters in simulink using block path in app designer?
조회 수: 5 (최근 30일)
이전 댓글 표시
I want to change block parameters (by refrrencing the block's path) in simulink using app designer.
In order to make .exe file I used SimulationInput object as the below code:
simInp = Simulink.SimulationInput('test_model');
I can't use simInp.setBlockParameter because of this error:

and I couldn't use set_param because it dosen't accept SimulationInput object an an input.
Here is the full code:
function startupFcn(app)
start_simulink;
end
% Button pushed function: simulateButton
function simulateButtonPushed(app, event)
try
simInp = Simulink.SimulationInput('test_model');
simInp = simInp.setBlockParameter("test_model/Gain",'Gain',num2str(app.kkEditField.Value));
% set_param('test_model/Gain','Gain',num2str(app.kkEditField.Value));
simInp = simulink.compiler.configureForDeployment(simInp);
simOut = sim(simInp);
t = simOut.tout;
y = simOut.yout{1}.Values.Data;
plot(app.UIAxes,t,y);
catch ME
errordlg(ME.message);
end
end
Would you please help me about the solution?
댓글 수: 0
답변 (1개)
Riya
2025년 6월 24일
Hi Sabereh,
I understand that you are getting an error while trying to change a block parameter in Simulink using the “SimulationInput” object in App Designer.
This error happens because you are using “setBlockParameter” along with “simulink.compiler.configureForDeployment”. These two are not compatible — once you configure a simulation for deployment, you are not allowed to modify block parameters directly using “setBlockParameter”.
To resolve this, you can change the block parameter in your model (e.g., “Gain” value) to be a workspace variable, and then use “setVariable” instead of “setBlockParameter” to assign the value.
Here is the corrected code:
function simulateButtonPushed(app, event)
try
simInp = Simulink.SimulationInput('test_model');
simInp = simInp.setVariable('kk', app.kkEditField.Value); % Set gain value using variable
simInp = simulink.compiler.configureForDeployment(simInp); % Prepares for EXE
simOut = sim(simInp); % Run simulation
t = simOut.tout;
y = simOut.yout{1}.Values.Data;
plot(app.UIAxes, t, y); % Plot output
catch ME
errordlg(ME.message);
end
end
To apply this solution, ensure that the “Gain” block in your model has its value set to “kk”(just a variable name) instead of a fixed number. The line setVariable('kk', value) passes this value to the model correctly even when it is compiled into a standalone “.exe”.
For further reference, please see the following documentation:
댓글 수: 1
Finlay
2025년 8월 5일
Hi Riya,
I'm looking to do something similar to pass a custom file name to the "record" block from the app so the user can select where to store model outputs. Documentation suggests you can only change the filename by modifying the block parameter directly, but this doesn't seem to be possible in the app designer. Is there any way to achive this?
Thanks,
Finlay
참고 항목
카테고리
Help Center 및 File Exchange에서 Simulink Environment Customization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!