필터 지우기
필터 지우기

How to change simulink variable from matlab script?

조회 수: 67 (최근 30일)
David Boelke
David Boelke 2022년 10월 10일
답변: David Boelke 2022년 10월 21일
This is a simplified example of the problem I am facing.
What I have:
I have a simulink model (PT1.slx):
And I have a matlab script (control.m):
% clean up
clear
close all
clc
% use simulink
set_param('PT1/K','Value','3');
out=sim('PT1');
% plot results
plot(out.output);
hold on
plot(out.input);
The script, can set the value of a constant, start the model and plot the output, neat!
What I want:
I want to be able to control the value inside my transfer function from my matlab script, for instance this:
What I have tried:
I have found out, that you can't control values like the one circled in red from datalines, for numeric reasons. But I can create a 'variable' for this value and control it from the 'model explorer', but how I can control my variables from a matlab script I do not know.
I have read through the 'set_param' help to see if it could be used for my purposes, but it seems I need a different tool.
I have searched around and found forum entries like
It talks about how someone can control 'simulink parameters', I don't think that is the same as a 'variable'.

채택된 답변

Benjamin Thompson
Benjamin Thompson 2022년 10월 10일

추가 답변 (2개)

Fangjun Jiang
Fangjun Jiang 2022년 10월 10일
편집: Fangjun Jiang 2022년 10월 10일
You can use set_param().
block='PT1/Transfer Fcn';
a=get_param(block,'Denominator')
b=eval(a)
b(2)=1.5
c=mat2str(b)
set_param(block,'Denominator',c);
a =
'[1 1 0]'
b =
1 1 0
b =
1.0000 1.5000 0
c =
'[1 1.5 0]'
  댓글 수: 1
David Boelke
David Boelke 2022년 10월 21일
That is also a good solution, I used the model workspace, but yours is a good answer, as it is closer to what I used before, thank you.

댓글을 달려면 로그인하십시오.


David Boelke
David Boelke 2022년 10월 21일
What I used is this:
a=get_param(bdroot,'modelworkspace');
T=1;
a.assignin('T',T);
Then I just replace the number in my simulink with the variable T. It is amazing, I can place variables either in the model workspace or in the base workspace, very cool.

카테고리

Help CenterFile Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by