雨流计数法的matlab实现
文章目录
- 一.雨流计数法原理及程序框图
- 1.雨流计数法程序的原理
- 2.程序框图
- 二.matlab程序
- 三.运行结果
本文内容:
(1)雨流计数法的程序原理
(2)matlab程序
(3)实现效果:显示出路径,以及均值和变程等信息。
一.雨流计数法原理及程序框图
1.雨流计数法程序的原理
2.程序框图
二.matlab程序
clear;clc
fprintf('三点法\n')
tic
%%有三种获取待处理数据的形式
%% (1)随机生成载荷。取样范围-30到30共50个点。
Load=randi([-30,30],50,1);Load=Load.';%%(2)可以处理表格数据,表格里面放一行数据即可
%Load=xlsread('文件.xlsx');%%(3)直接处理行矩阵内的数据
%Load=[5,-1,3,-4,4,-2,1,-3,0,-2];subplot(2,2,1);
x=1:1:length(Load);
plot(x,Load);
title('原始数据');Load1=Load;
Load2=Load;
L3=length(Load2);
%去除除了峰谷之外的数据
m1=L3;
for i=2:1:m1-1if Load2(i-1)<=Load2(i)&&Load2(i)<=Load2(i+1)%斜率大于零Load1(i)=NaN;else if Load2(i-1)>=Load2(i)&&Load2(i)>=Load2(i+1)%斜率小于零Load1(i)=NaN;endend
end
Load1(isnan(Load1))=[];%删除非峰谷的点
%对载荷时间历程再造,使从最大(小)值拆开,前后拼接,使从最值开始最值结束
[b,c]=max(Load1);
n1=length(Load1);
B1=Load1(c:n1);
B2=Load1(1:c);
Load1=[B1,B2];
%再只留波峰波谷,防止拼接处出现不合理的数据
Load2=Load1;
m1=length(Load1);
for i=2:1:m1-1if Load2(i-1)<Load2(i)&&Load2(i)<Load2(i+1)Load1(i)=NaN;elseif Load2(i-1)>Load2(i)&&Load2(i)>Load2(i+1)Load1(i)=NaN;end
end
Load1(isnan(Load1))=[];subplot(2,2,2);
x=1:1:length(Load1);
plot(x,Load1);
title('波峰波谷数据');%把数据以坐标的形式放到二维数组
a=zeros(2,length(Load1));
for i=1:length(Load1)
a(1,i)=i;%表示存储的第几个数据
a(2,i)=Load1(i);%存储的数据值
endAmplitude=[];%存幅度值
Mean=[];%存均值%雨流计数法
%b1={a(1,1);a(2,1)};
b1=[a(1,1),a(1,2);a(2,1),a(2,2)];
a(:,1)=[];%删除原数据第一个点
a(:,1)=[];%删除原数据第二个点i=3;
n=2;%提取到b1的点数目
k=length(a(1,:));
while length(a(1,:))>=1if(n<3&&length(a(1,:))>=1)b1=[b1 [a(1,1);a(2,1)]];%读入数据a(:,1)=[];%删除原数据点n=n+1;if(n>=3)m=length(b1(1,:))-2;Y=abs(b1(2,m)-b1(2,m+1));X=abs(b1(2,m+2)-b1(2,m+1));if(X>=Y)Amplitude=[Amplitude abs(b1(2,m)-b1(2,m+1))];%存幅度值Mean=[Mean (b1(2,m)+b1(2,m+1))/2];%存均值fprintf('循环路径:(%d,%d)->(%d,%d) 变程:%d 均值:%.2f\n',b1(1,m),b1(2,m),b1(1,m+1),b1(2,m+1),abs(b1(2,m)-b1(2,m+1)),(b1(2,m)+b1(2,m+1))/2);b1(:,m)=[];%删除处理过的数据三个点中第一个点b1(:,m)=[];%删除处理过的数据三个点中第二个点n=n-2;elsen=n-1;continue;endelsecontinue;endelsecontinue;end
end%处理提取到b1的剩余数据
while length(b1(1,:))>=3m=length(b1(1,:))-2;Y=abs(b1(2,m)-b1(2,m+1));X=abs(b1(2,m+2)-b1(2,m+1));if(X>=Y)Amplitude=[Amplitude abs(b1(2,m)-b1(2,m+1))];%存幅度值Mean=[Mean (b1(2,m)+b1(2,m+1))/2];%存均值fprintf('循环路径2:(%d,%d)->(%d,%d) 变程:%d 均值:%.2f\n',b1(1,m),b1(2,m),b1(1,m+1),b1(2,m+1),abs(b1(2,m)-b1(2,m+1)),(b1(2,m)+b1(2,m+1))/2);b1(:,m)=[];%删除处理过的数据三个点中第一个点b1(:,m)=[];%删除处理过的数据三个点中第二个点end
endsubplot(2,2,3);
x=1:1:length(Amplitude);
plot(x,Amplitude);
title('变程');subplot(2,2,4);
x=1:1:length(Mean);
plot(x,Mean);
title('均值');toc
三.运行结果
程序运行效果:
这是路径,也就是雨流计数法结果。
下图是一些其他可能有用的数据包括:波峰波谷数据以及均值、变程数据。
程序源码下载-github
参考资料:
(1)《疲劳与断裂》 陈传尧 华中科技大学出版社
(2)https://blog.csdn.net/weixin_47693142/article/details/116660707
如果您觉得本文写的不错,欢迎点赞评论收藏!
雨流计数法的matlab实现相关推荐
- 2021-05-11雨流计数法的matlab代码实现,三点法四点法修正版
"我是置顶":本文仅供参考,禁止大作业抄袭!!! 这个代码还可以完善,还可以实现比如记录半循环之类的功能,加油! 2020年10月份左右因为课程原因接触了一下雨流计数法,该方法用于 ...
- 雨流计数法及matlab代码【转载】
作者:杰出的杰出 来源:CSDN 原文:https://blog.csdn.net/u011391128/article/details/79551601 版权声明:本文为博主原创文章,转载请附上博文 ...
- MATLAB代码:基于雨流计数法的源-荷-储双层协同优化配置
MATLAB代码:基于雨流计数法的源-荷-储双层协同优化配置 关键词:双层规划 雨流计算法 储能优化配置 参考文档:<储能系统容量优化配置及全寿命周期经济性评估方法研究>第三章 仿真平台: ...
- matlab雨流计数,matlab雨流计数法
算法的实现主要基于 Matlab 编程实现. 关键词:图像分割,种子区域生长算法,Matlab 一.引言区域生长是一种古老的图像分割方法,最早的区域生长图像分割方法是由 Levine...... Ma ...
- matlab雨流计数,雨流计数法matlab程度源代码
<雨流计数法matlab程度源代码>由会员分享,可在线阅读,更多相关<雨流计数法matlab程度源代码(3页珍藏版)>请在人人文库网上搜索. 1. RAINFLOW cycle ...
- 【有限元分析】风力发电机塔筒筒体校核——matlab雨流计数法
全部程序下载链接 https://download.csdn.net/download/yjw0911/20865581 1.定义sn曲线 %定义SN曲线并求出对应应力幅值的N,包含厚度修正系数及安全 ...
- 符合ASTM标准的雨流计数法及其不同的改进方法
随着研究的深入,人们发现采用时间序列计算载荷谱太麻烦了,处理的工作量太大,我们不需要将每个时刻点的载荷都做运算,疲劳计算只需要提供幅值.均值和循环次数,鉴于此发展出了很多不同的计数方法,雨流法是最常见 ...
- 对三点雨流计数法的思考
1 雨流计数法 将载荷旋转90°,模仿雨流沿屋檐下落,进行循环计数,遵循以下规则: 将载荷历程看作多层屋顶,假想有雨滴沿着最大峰或者最大谷处,开始下流. 起始于波谷的雨流,遇到比他更低的谷值要停止:起 ...
- 基于雨流计数法的源-荷-储双层协同优化配置 代码主要做的是一个源荷储优化配置的问题
基于雨流计数法的源-荷-储双层协同优化配置 主要内容:代码主要做的是一个源荷储优化配置的问题,采用双层优化,外层优化目标的求解依赖于内层优化的储能系统充放电曲线,基于储能系统充放电曲线,采用雨流计数法 ...
最新文章
- Python学习笔记——全局变量声明
- 剑指offer:旋转数组的最小数字
- 如何提取edit control中输入的数据_如何在Power Query中提取数据——列表篇(1)
- [原创]基于Extjs的开源控件库 - http://extaspnet.codeplex.com/
- ajax jq 图片上传请求头_如何使用js或jQuery向Ajax请求添加自定义HTTP头?
- LINUX设备模型BUS,DEVICE,DRIVER
- php控制字数方法,php处理字数过多的方法
- Java中不一致的操作会扩大规则
- 信息学奥赛一本通(1057:简单计算器)
- python 函数嵌套 报错_《Python》 函数嵌套、闭包和迭代器
- Oracle 无备份情况下的恢复--控制文件/数据文件
- HTML、CSS、JS对unicode字符的不同处理
- php修改语法错误,php语法检查的方法总结
- 管理感悟:怎样给程序找好的思路
- B2B、B2C、C2C、O2O分别是什么意思?
- FreeSWITCH之日志级别
- MSDP RPF检测
- python输出一棵树_如何用Python画一棵树
- STM32粗略延时,大致精确
- Flutter 字体设置加粗