rainflow function usage in app designer causes the figure window open
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
Hi All
I have to use rainflow function in my application. but it causes the figure window open despite I have turned off the visibility. is there any solution to that ?
f = figure('visible', 'off');
TT = timetable(tt,B);
rainflow(TT);
title(strcat(filename,'Histogram y'));
saveas(gcf,strcat(filename,'Histogram-y.png'));
채택된 답변
Walter Roberson
2020년 4월 2일
When you do not specify output arguments for rainflow() then it calls a function to plot the results. Unfortunately there are a couple of careless lines in the plotting function that bring the resulting axes into focus, and that results in the plot becoming visible.
The work around is to request the output variables from rainflow() and do the plotting yourself.
I will file a bug report about the problem with accidental focus.
댓글 수: 21
thank you Walter
where are these careless lines ? if inside MATLAB function library, like inside the rainflow function, could they be edited by the user ?
In R2020a, line 254
axes(p1)
axes tight
should be
axes(p1, 'tight')
and a few lines further down, remove
axes(p2)
without making any other change for p2.
thank you very much, and in R2017b ?
and, how can I find the rainflow function ? how and where to search ? in install directory ? command prompt ?
That will take me a few minutes to install.
Look near line 260 in the R2017b version.
Thank you so much, a little problem : It's read only and writing protected ! what should I do ?
Make a copy under a different name and modify the copy and call that.
I tried again, I had to close MATLAB. I applied that change. but Now the histograms do not work. I mean, with no error, I get no histogram saved , and the code stops as soon as it gets to histogram function
@Walter Roberson shall you please write the very original lines ? I wrote these , to set back to default, but it's not working and giving me error of invalid handles. I think I am mistaking the places to input the axes commands
% Resize the plots, make the time series plot smaller.
p1p = get(p1,'position');
p1p(2) = p1p(2)+p1p(4)/2;
p1p(4) = p1p(4)/2;
set(p1,'position',p1p)
p1p = get(p1,'position');
p2p = get(p2,'position');
p2p(4) = 0.75*(p1p(2)-p2p(2));
set(p2,'position',p2p)
% Make the time series plot tight in x and give a margin in y
axes(p1)
axes tight
yl = signal.internal.nvh.plotLimits(get(p1,'ylim'));
set(p1,'ylim',yl);
axes(p2)
xl = signal.internal.nvh.plotLimits(get(p2,'xlim'));
set(p2,'xlim',xl);
yl = signal.internal.nvh.plotLimits(get(p2,'ylim'));
set(p2,'ylim',yl);
Dear Walter, Shall you very please paste or attach the very original rainflow function here ? I did a mistake not to hold the original one
The function is copyright by Mathworks, so I cannot post it. However, above in https://www.mathworks.com/matlabcentral/answers/514771-rainflow-function-usage-in-app-designer-causes-the-figure-window-open#comment_819779 I showed the original lines as well as the revised lines.
True. Thank you walter. but I also found out that it had to be
axes(p1)
axes ('tight')
axes tight
and
axes('tight')
are the same thing as far as MATLAB is concerned. In MATLAB, when you use the syntax
NAME ARG1 ARG2 ARG3
and there is no '(' at the beginning of ARG1,
then that is treated the same as
NAME('ARG1', 'ARG2', 'ARG3');
Thank you dear Walter, but anyway, that solution for me did not work. I mean the merging of 2 lines and removal of axes p2 . now I am back to the original version but I appreciate if you give me a suggestion, or I just leave it as it is
ok , new problem here :
Since in my code, as you know , I use waitbar and that is a figure as well, when the processing is done,
I have 6 figures of histogram open plus this waitbar.
if I do close all , also the waitbar will open. since in the histogram function I do :
rainflow(TT);
title(strcat(filename,'Histogram1'));
saveas(gcf,strcat(filename,'Histogram-1.png'));
I was thinking to close each histogram immediately after being opened , without using close all. I thought
rf=rainflow(TT);
title(strcat(filename,'Histogram1'));
saveas(gcf,strcat(filename,'Histogram-1.png'));
close(rf)
would work, but instead, no histogram was opening and no histogram image was being saved.
do you have any suggestion ?
Remember to drawnow() before the saveas().
You might need to pause(1) instead to give the drawing time to finish.
dear Walter, the first code saves the plots correctly. but I want to close the plot after saving, without using close all, to avoid closing waitbar
dear Walter, Just about this question, about modifying the axes(p1), I tried your suggestions again on the rainflow.m function file of matlab abd re-ran the code and got this error :
Error: Incorrect input args for constructing axes object
the reason is , one of them is axes, the other one is axis. and the new mixing does not work, cause probably axes does not get more than one argoment
axes(p1);
axis('tight');
It would be really great to have a solution to this
axes(p1);
axis('tight');
should become
axis(p1, 'tight');
I did this. Now I have one single figure open and its content changes , given that I have to make several rainflow figures during the run. but I will have this one figure opend.
even If I do
f = figure('visible','off');
It will create another figure, and the ONE figure will remain open
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
