資源簡(jiǎn)介
用雨流計(jì)數(shù)法計(jì)算材料疲勞強(qiáng)度的一種方法,這里提供了具體的算法

代碼片段和文件信息
/*??RAINFLOW?$?Revision:?1.0?$?*/
/*??by?Adam?Nieslony???????????*/
#include?
#include?“mex.h“
/*?++++++++++?BEGIN?RF3?[ampl?ampl_mean?nr_of_cycle]?*/
/*?++++++++++?Rain?flow?without?time?analysis?*/
void
rf3(mxArray?*array_ext?mxArray?*hs[])?{
??double?*pr?*po?a[512]?ampl?mean;
??int?tot_num?index?j?cNr;
??mxArray?*array_out;
??tot_num?=?mxGetM(array_ext)?*?mxGetN(array_ext);
??pr?=?(double?*)mxGetPr(array_ext);
??array_out?=?mxCreateDoubleMatrix(3?tot_num-1?mxREAL);
??po?=?(double?*)mxGetPr(array_out);
??j?=?-1;
??cNr?=?1;
??for?(index=0;?index ????a[++j]=*pr++;
????while?(?(j?>=?2)?&&?(fabs(a[j-1]-a[j-2])?<=?fabs(a[j]-a[j-1]))?)?{
??????ampl=fabs(?(a[j-1]-a[j-2])/2?);
??????switch(j)
??????{
????????case?0:?{?break;?}
????????case?1:?{?break;?}
????????case?2:?{
??????????mean=(a[0]+a[1])/2;
??????????a[0]=a[1];
??????????a[1]=a[2];
??????????j=1;
??????????if?(ampl?>?0)?{
????????????*po++=ampl;
????????????*po++=mean;
????????????*po++=0.50;
??????????}
??????????break;
????????}
????????default:?{
??????????mean=(a[j-1]+a[j-2])/2;
??????????a[j-2]=a[j];
??????????j=j-2;
??????????if?(ampl?>?0)?{
????????????*po++=ampl;
????????????*po++=mean;
????????????*po++=1.00;
????????????cNr++;
??????????}
??????????break;
????????}
??????}
????}
??}
??for?(index=0;?index ????ampl=fabs(a[index]-a[index+1])/2;
????mean=(a[index]+a[index+1])/2;
????if?(ampl?>?0){
??????*po++=ampl;
??????*po++=mean;
??????*po++=0.50;
????}
??}
??/*?you?can?free?the?allocated?memeory?*/
??/*?for?array_out?data?????????????????*/
??mxSetN(array_out?tot_num?-?cNr);
??hs[0]=array_out;
}
/*?++++++++++?END?RF3?*/
/*?++++++++++?BEGIN?RF5?[ampl?ampl_mean?nr_of_cycle?cycle_begin_time?cycle_period_time]*/
/*?++++++++++?Rain?flow?with?time?analysis?*/
void
rf5(mxArray?*array_ext?mxArray?*array_t?mxArray?*hs[])?{
??double?*pr?*pt?*po?a[512]?t[512]?ampl?mean?period?atime;
??int?tot_num?index?j?cNr;
??mxArray?*array_out;
??tot_num?=?mxGetM(array_ext)?*?mxGetN(array_ext);
??pr?=?(double?*)mxGetPr(array_ext);
??pt?=?(double?*)mxGetPr(array_t);
??
??array_out?=?mxCreateDoubleMatrix(5?tot_num-1?mxREAL);
??po?=?(double?*)mxGetPr(array_out);
??j?=?-1;
??cNr?=?1;
??for?(index=0;?index ????a[++j]=*pr++;
????t[j]=*pt++;
????while?(?(j?>=?2)?&&?(fabs(a[j-1]-a[j-2])?<=?fabs(a[j]-a[j-1]))?)?{
??????ampl=fabs(?(a[j-1]-a[j-2])/2?);
??????switch(j)
??????{
????????case?0:?{?break;?}
????????case?1:?{?break;?}
????????case?2:?{
??????????mean=(a[0]+a[1])/2;
??????????period=(t[1]-t[0])*2;
??????????atime=t[0];
??????????a[0]=a[1];
??????????a[1]=a[2];
??????????t[0]=t[1];
??????????t[1]=t[2];
??????????j=1;
??????????if?(ampl?>?0)?{
????????????*po++=ampl;
????????????*po++=mean;
????????????*po++=0.50;
????????????*po++=atime;
????????????*po++=period;
??????????}
??????????break;
????????}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3452??2005-01-12?19:00??index.html
?????文件????????1335??2009-05-19?06:42??license.txt
?????文件????????5463??2003-01-29?11:39??rainflow.c
?????文件????????9216??2005-01-12?17:43??rainflow.dll
?????文件?????????926??2003-10-24?17:00??rainflow.m
?????文件????????2584??2005-01-12?17:51??rfdemo1.m
?????文件?????????896??2005-01-12?18:13??rfdemo2.m
?????文件????????1941??2003-08-17?01:44??rfhist.m
?????文件??????100358??2003-10-24?17:15??rfmatrix.jpg
?????文件????????3151??2003-08-17?02:15??rfmatrix.m
?????文件???????17849??2003-10-24?17:21??rfmatrix.png
?????文件????????2944??2005-01-12?17:50??sig2ext.m
評(píng)論
共有 條評(píng)論