Simulink scope autoscale

26 次查看(过去 30 天)
Hi everyone, i was wondering if there is a way for a scope i use in a simulink model to automaticaly autoscale. Maybe from adding a code to its startfunction???

采纳的回答

Titus Edelhofer
Titus Edelhofer 2012-1-18
Hi Raldi,
assuming the scope blocks are open, the following piece of code does the autoscaling for you:
% find all scope blocks as MATLAB figures:
set(0, 'showhiddenhandles', 'on')
scope = findobj(0, 'Tag', 'SIMULINK_SIMSCOPE_FIGURE');
for i=1:length(scope)
% this is the callback of the "autoscale" button:
simscope('ScopeBar', 'ActionIcon', 'Find', scope(i))
end
set(0, 'showhiddenhandles', 'off')
Titus
  5 个评论
Scott Rauscher
Scott Rauscher 2013-1-18
Where did you implement this Raldi? I'm not sure how to use the code that Titus supplied. I tried adding it in a Matlab Function that runs in the Simulink model, but that didn't work
I also tried just running the code in Matlab afterwards and that did nothing. What did you do?
Ignacio
Ignacio 2013-9-18
To make the autoscale function automatically i created a matlab function with the code above. The code will be executed each certain period of time. In my case 3 seconds, i did it with this function and the block clock of Simulink. the function that i have created is this one: -------- function u=scope(y) % find all scope blocks as MATLAB figures: u=0; z=mod(y,3)==0 if(z==1) set(0, 'showhiddenhandles', 'on') scope = findobj(0, 'Tag', 'SIMULINK_SIMSCOPE_FIGURE'); for i=1:length(scope) % this is the callback of the "autoscale" button: simscope('ScopeBar', 'ActionIcon', 'Find', scope(i)) end set(0, 'showhiddenhandles', 'off') end
end ----------- Then, in the clock block i selected 1000 as decimation and i use this code in a "interpreted Matlab function" block just writting "scope" in the label "Matlab function". I drive the output of this function to a scope but this output is not really interesting.
best regards

请先登录,再进行评论。

更多回答(5 个)

Ilham Hardy
Ilham Hardy 2012-1-17
By clicking the binocular button on the scope, perhaps?
  2 个评论
Raldi
Raldi 2012-1-17
well i said automatically so this excludes clicking stuff :)
Mandip Regmi
Mandip Regmi 2020-5-20
I did not find the binocular button too

请先登录,再进行评论。


TAB
TAB 2012-1-18
Add below piece of code in your 'StopFcn' callback function. When the simulation is completed, it will open and autoscale all the scopes in the model.
[EDITED TO WORK FOR MULTIPLE INPUT SCOPE]
bh=find_system(gcs,'FindAll','on','BlockType','Scope');
for x=1:length(bh) %close all scope
set_param(bh(x),'Open','off');
end
for x=1:length(bh)
set_param(bh(x),'Open','on');
fh=gcf;
AxesInScope = findall(fh,'type','axes');
for y=1:length(AxesInScope)
set(fh,'CurrentAxes',AxesInScope(y));
xlim('auto');
ylim('auto');
end
end
  6 个评论
Raldi
Raldi 2012-1-18
What if i somehow used set Ymin = min(inout) Ymax = max(inout)... is this possible?
TAB
TAB 2012-1-18
As your scope is reading 2 inputs, previous code was autoscaling only one graph keeping other as it is.
I have updated the code so that it can work for multiple input scopes.

请先登录,再进行评论。


Andreas Goser
Andreas Goser 2012-1-18
Typically, when users describe this, they are happy with the Time Scope Block from DSP System Toolbox. Here is the link to the documentation.
Especially, as Raldi is working at a university in the field of Signal Processing, this product should be available. Note that previous versions used different names like Signal Processing Blockset or DSP Blockset.
  4 个评论
Raldi
Raldi 2012-1-18
Yeah i figured you might say that. The thing is that i am not sure how to do that.
Raldi
Raldi 2012-1-18
i think there is another way, ill try to change its YLim throygh my gui and update it.

请先登录,再进行评论。


Mingli ZHU
Mingli ZHU 2021-4-22
编辑:Mingli ZHU 2021-4-22
set(0, 'showhiddenhandles', 'on')
%current graphic object
scope=gcf;
%find Autoscale object
scale=findobj(gcf, 'Tag', 'uimgr.uisplittool_Autoscale');
%click this object
feval(get(scale,'Callback'),scale,[]);
%find PrintToFigure Menu
fig=findobj(gcf, 'Tag', 'uimgr.uimenu_PrintToFigure');
%Click this Menu
feval(get(fig,'Callback'),fig,[]);
set(0, 'showhiddenhandles', 'off')

Jessy Mathault
Jessy Mathault 2021-8-27
This function:
simscope('ScopeBar', 'ActionIcon', 'Find', scope(i))
Doesn't seem to be supported anymore in MATLAB 2020b.
This seems to work:
allAxes = findall(gcf,'type','axes');
for x = 1:numel(allAxes)
axis(allAxes(x), 'auto y');
axis(allAxes(x), 'auto x');
end

Community Treasure Hunt

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

Start Hunting!

Translated by