% 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)
% 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);
% 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)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))
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)
本文档为【雨流计数法matlab程度源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。