rainflow function usage in app designer causes the figure window open
1 次查看(过去 30 天)
显示 更早的评论
farzad
2020-4-2
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 个评论
farzad
2020-4-2
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 ?
Walter Roberson
2020-4-2
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.
farzad
2020-4-2
and, how can I find the rainflow function ? how and where to search ? in install directory ? command prompt ?
farzad
2020-4-3
Thank you so much, a little problem : It's read only and writing protected ! what should I do ?
farzad
2020-4-4
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
farzad
2020-4-4
@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);
farzad
2020-4-4
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
Walter Roberson
2020-4-4
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.
farzad
2020-4-4
True. Thank you walter. but I also found out that it had to be
axes(p1)
axes ('tight')
Walter Roberson
2020-4-4
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');
farzad
2020-4-4
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
farzad
2020-4-5
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 ?
Walter Roberson
2020-4-6
Remember to drawnow() before the saveas().
You might need to pause(1) instead to give the drawing time to finish.
farzad
2020-4-6
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
farzad
2020-5-11
编辑:farzad
2020-5-11
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
farzad
2020-5-12
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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Vibration Analysis 的更多信息
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)
亚太
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)