骨架曲线的提取
代码网上很多,但是却没有教程,所以代码拿来一跑就出错,为了以后方便复习及后面的师弟师妹好使用,在此做个手把手教程。在此感谢133办公室曾师兄,没有他的指导代码仍是跑不动的。
先上代码,点击matlab中的新建脚本,将此代码复制进去修改即可。
clear all
clc;
hyster=importdata('D:\matlab\bin\xjx.mat');%导入数据
LineNum=size(hyster,1);
EndCircle=1;
%--------------------找各级循环分割点位置----------------------负->正or负->零
for i=3:LineNum
if (hyster(i,1)*hyster(i-1,1)<=0)&&(hyster(i-1,1)<0);%--默认初始加载从正半周开始
EndCirclePoints(EndCircle)=i; %分割点的行号EndCirclePoints
EndCircle=EndCircle+1; %中间分割点个数为EndCircle-1
end;
end;
%--------------------检查最后是否存在不完整滞回环----------------------
if EndCirclePoints(EndCircle-1)<LineNum
LoopNum=length(EndCirclePoints)+1; %LoopNum仅为完整循环的个数,应还有最后一个不完整循环
else
LoopNum=length(EndCirclePoints);
end;
hyster=hyster(1:EndCirclePoints(EndCircle-1),:);
deflection=hyster(:,1);%位移
Force=hyster(:,2);%力
% figure()
% plot(deflection,Force,'r') %%绘图
% hold on
Vmp=max(Force(:,1));%%最大荷载(正向)
Vmn=min(Force(:,1));%%最大荷载(负向)
dmp=deflection(find(hyster(:,2)==Vmp),1);%%最大位移(正向)
dmn=max(deflection(find(hyster(:,2)==Vmn),1));%%最大位移(负向)
% plot(dmp,Vmp,'*',dmn,Vmn,'*')
% hold on
Vcrack_p=0.85*Vmp;%%峰值85%
Vcrack_n=0.85*Vmn;%%峰值85%
% plot([0,40],[Vmp,Vmp],'b',[0,40],[Vp,Vp],'k',[-40,0],[Vmn,Vmn],'b',[-40,0],[Vn,Vn],'k')
Vp=0.7*Vmp;%%峰值70%
Vn=0.7*Vmn;%%峰值70%
%% 正向文章来源:https://www.toymoban.com/news/detail-470138.html
%% 找出相交临近点
count1=0
for i=2:length(deflection(:,1))
if Force(i-1)<=Vp &a文章来源地址https://www.toymoban.com/news/detail-470138.html
到了这里,关于使用Matlab提取骨架曲线与耗能能力的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!