% RAINFLOW cycle counting.
% RAINFLOW counting function allows you to extract % cycle from random loading. %
% SYNTAX
% rf = RAINFLOW(ext) % rf = RAINFLOW(ext, dt) % rf = RAINFLOW(ext, extt) %
% OUTPUT
% rf - rainflow cycles: matrix 3xn or 5xn dependend on input, % rf(1,:) Cycles amplitude, % rf(2,:) Cycles mean value,
% rf(3,:) Number of cycles (0.5 or 1.0),
% rf(4,:) Begining time (when input includes dt or extt data), % rf(5,:) Cycle period (when input includes dt or extt data), %
% INPUT
% ext - signal points, vector nx1, ONLY TURNING POINTS!, % dt - sampling time, positive number, when the turning points % spaced equally,
% extt - signal time, vector nx1, exact time of occurrence of turning points. % %
% See also SIG2EXT, RFHIST, RFMATRIX, RFPDF3D.
% RAINFLOW
% Copyright (c) 1999-2002 by Adam Nieslony, % MEX function.
function rfdemo1(ext)
1 / 4 DOC格式可编辑
% function rfdemo1(ext) %
% RFDEMO1 shows cycles extracted from signal % using rainflow algoritm. %
% INPUT: ext - option, number or vectors with turning % points or time history. Default ext=16. %
% OUTPUT: no enable. %
% SYNTAX:
% >>rfdemo1 % >>rfdemo1(10)
% >>rfdemo1([2 3 2 4 2 5 1 6]) %
% By Adam Nies硂ny % Revised, 10-Nov-2009
% Visit the MATLAB Central File Exchange for latest version.
error(nargchk(0,2,nargin))
if nargin==0,
% turning points from 16 random numbers ext=sig2ext(randn(4)); elseif length(ext(:))==1,
% turning points from n random numbers ext=sig2ext(randn(1,ext)); else
% turning points from vector ext ext=sig2ext(ext); end
a=rainflow(ext,1); [m n]=size(a);
2 / 4 DOC格式可编辑
% if n>100,
% button = questdlg(['Rainflow found ' num2str(sum(a(3,:))) ' cycles! Do you want to continue?'],... % 'Continue Operation','Yes','No','No'); % if strcmp(button,'No')
% error('Function aborted by user.') % end % end
col='ymcrgb';
plot(0:length(ext)-1,ext,'k.:') hold on wyk=0:0.05:1; for c=1:n,
colnr=rem(c-1,6)+1;
nr1=round(a(4,c)+1);
nr2=round(a(4,c)+1+a(5,c)*a(3,c)); if a(3,c)==1.0,
if ext(nr1) plot(wyk.*a(5,c)+a(4,c),cos( wyk.*2*pi)*a(1,c)+a(2,c),col(colnr)) text(a(4,c),a(2,c)+a(1,c),[int2str(c) '. Cycle, down'],... 'Color',col(colnr),'VerticalAlignment','bottom') end else if ext(nr1)>ext(nr2), plot(wyk.*a(5,c)*0.5+a(4,c),cos( wyk.*pi)*a(1,c)+a(2,c),col(colnr)) text(a(4,c),a(2,c)+a(1,c),[int2str(c) '. Half-cycle, down'],... 'Color',col(colnr),'VerticalAlignment','bottom') else plot(wyk.*a(5,c)*0.5+a(4,c),cos(pi+wyk.*pi)*a(1,c)+a(2,c),col(colnr)) 3 / 4 DOC格式可编辑 text(a(4,c),a(2,c)-a(1,c),[int2str(c) '. Half-cycle, up'],... 'Color',col(colnr),'VerticalAlignment','top') end end end xlabel('peaks, counted from 0') ylabel('value') title('Rainflow cycles extracted from signal') legend('peaks from signal',0) hold off disp('Row 1: amplitude') disp('Row 2: mean') disp('Row 3: number of cycles (cycle or half cycle)') disp('Row 4: begin time of extracted cycle or half cycle') disp('Row 5: period of a cycle') disp(a) 感谢您使用本店文档 您的满意是我们永恒的追求! (本句可删) ------------------------------------------------------------------------------------------------------------ 4 / 4 DOC格式可编辑 因篇幅问题不能全部显示,请点此查看更多更全内容