MATLAB程序集Word文件下载.docx
- 文档编号:3067004
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:13
- 大小:18.10KB
MATLAB程序集Word文件下载.docx
《MATLAB程序集Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB程序集Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
end_K*K,[1w1_i]);
Data_Lvbo=wzfun_LvBo(Data_Yuan(:
2),1024,10,400);
w_td_str=['
第'
num2str(w1_i-1)'
通道信号'
];
wzfun_Graph(Data_Yuan,5*(w1_i-2)+1,1,'
原始信号时域波形图'
'
时间(s)'
振动加速度(m/s^2)'
b'
w_td_str)
Data_Lvbo_t=[Data_Yuan(:
1)Data_Lvbo];
wzfun_Graph(Data_Lvbo_t,5*(w1_i-2)+2,1,'
滤波后信号时域波形图'
r'
[f_Yuan,Pin_A_Yuan]=wzfun_PinPu(Data_Yuan);
[f_Lvbo,Pin_A_Lvbo]=wzfun_PinPu(Data_Lvbo_t);
Data_Yuan_Pin_A=[f_Yuan,Pin_A_Yuan];
Data_Lvbo_Pin_A=[f_Lvbo,Pin_A_Lvbo];
wzfun_Graph(Data_Yuan_Pin_A,5*(w1_i-2)+3,1,'
原始信号频谱(幅值谱)图'
频率(Hz)'
wzfun_Graph(Data_Lvbo_Pin_A,5*(w1_i-2)+4,1,'
滤波后信号频谱(幅值谱)图'
%求基频及前四次谐波所对应的幅值
%===============================================================
%[x1_zby1_zz]=wzfun_ZuiZhi(f_Lvbo,Pin_A_Lvbo);
f_max=max(f_Lvbo);
munm=size(f_Lvbo);
fori=1:
4
fw_min=(JiPin)*i*0.8;
fw_max=(JiPin)*i*1.2;
ni=round(fw_min*munm/f_max+1);
ifni<
=1;
ni=1;
end
na=round(fw_max*munm/f_max+1);
ifna>
=munm
na=munm;
[x_zb(i)y_zz(i)]=wzfun_ZuiZhi(f_Lvbo(ni:
na),Pin_A_Lvbo(ni:
na));
%[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)%对p,t进行归一化
y_zz_guiyi=norm(y_zz);
shujubiao=[x_zb'
y_zz'
/y_zz_guiyi];
h=figure(5*(w1_i-2)+5);
set(h,'
Color'
White'
);
bar(shujubiao(:
2),0.5);
title(w_td_str);
%标题栏
xlabel('
谐波阶次'
%x轴标签
ylabel('
幅值归一化'
%y轴标签
ylim([01]);
disp([w_td_str'
谐波分量'
])
sprintf('
%8.1f%5.3f\n'
shujubiao'
)
%求解振动幅值有效值
%=====================================================================
A_Rms(w1_i-1)=wzfun_RmsA([Data_Yuan(:
1)Data_Lvbo]);
振动有效值为:
RA=A_Rms(w1_i-1)
%=====================================================================
End
2.神经网络故障诊断程序(m文件名:
wz_ANN.m):
%函数名称:
wz_ANN
%函数功能:
基于神经网络的故障诊断
%备注:
脚本式M文件
2009.05.18
%===========参数设置区=======================================================
YB_TZ_n=4;
%故障样本特征维数
GZ_ZhongLei=3;
%故障种类
%=======================================================
w_BT_1='
请选择你要装载的故障样本数据文件'
w_BT_2='
请选择你要装载的待诊断数据文件'
[DataLoadWJ_Name]=wzfun_LoadFile(w_BT_1);
装载的故障训练样本文件名为:
[Num_ln,Num_col]=size(DataLoad);
p=DataLoad(:
1:
YB_TZ_n)'
t=DataLoad(:
YB_TZ_n+1:
YB_TZ_n+GZ_ZhongLei)'
%神经网络建立与训练
%=========================================================================
%RBF神经网络
net=newrb(p,t,1e-6,0.15,300,1);
%进行故障诊断
%==========================================================================
[DataZDWJ_Name_1]=wzfun_LoadFile(w_BT_2);
装载的故障诊断样本文件名为:
WJ_Name_1])
p_zd=DataZD(:
故障诊断结果为:
P2=sim(net,p_zd)
%savenet_zdnet
3.装载数据函数(m文件名:
wzfun_LoadFile.m):
function[DataLoad,WJ_Name]=wzfun_LoadFile(BT)
wzfun_LoadFile
装载文件数据
%调用格式:
[DataLoadWJ_Name]=wzfun_LoadFile(BT)
%入口参数:
BT:
载入文件对话框标题
%返回值:
DataLoad:
载入的文件数据
%WJ_Name:
载入的文件名称
无
%装载数据
FileFilter={'
*.txt'
TXT-files(*.txt)'
*.rtf'
RTF-files(*.rtf)'
*.*'
AllFiles(*.*)'
};
[filename,pathname]=uigetfile(FileFilter,BT,'
文件名称'
WJLoad=[pathnamefilename];
WJ_Name=filename;
if(isequal(filename,0)|isequal(pathname,0))
return;
end
%设置异常处理
try
DataLoad=load(WJLoad);
catch
disp(lasterr);
disp('
数据装载失败'
4.绘图函数(m文件名:
wzfun_Graph.m):
functionwzfun_Graph(Data,GraphNum,Grid,my_title,my_xlabel,my_ylabel,Co,BD)
wzfun_Graph
绘制图形
wzfun_Graph(Data,GraphNum,Grid,my_title,my_xlabel,my_ylabel,Co,BD)
Data:
绘图数据(m*n矩阵)
%GraphNum:
图形编号(自然数)
%Grid:
是否显示网格(取值1时显示,取值0时不显示)
%my_title:
图形标题(字符串)
%my_xlabel:
x轴标签(字符串)
%my_ylabel:
y轴标签(字符串)
%Co:
线型、颜色设置,示例:
Co=['
r--'
g-x'
k-+'
m-*'
y-s'
c-o'
b-v'
%BD:
图示标签,示例:
BD=['
1号测点'
2号测点'
3号测点'
4号测点'
5号测点'
[Num_ln,Num_col]=size(Data);
x=Data(:
y=Data(:
Num_col);
%绘制图形
h=figure(GraphNum);
%绘图
holdon;
Num_col-1
plot(x(:
1),y(:
i),Co(i,:
))%线性坐标系
title(my_title)%标题栏
xlabel(my_xlabel)%x轴标签
ylabel(my_ylabel)%y轴标签
ifGrid==1
gridon
legend(BD(1:
Num_col-1,:
));
图形绘制失败,请仔细检查失败原因'
5.滤波函数(m文件名:
wzfun_LvBo.m):
functionDataLvbo=wzfun_LvBo(Data,fs,fmin,fmax)
wzfun_LvBo
带通滤波
DataLvbo=wzfun_LvBo(Data,fs,fmin,fmax)
Data:
原始数据
%fs:
采样频率
%fmin:
最小截止频率
%fmax:
最大截止频率
DataLvbo:
带通滤波后数据
2009.05.25
%取信号数据长度
n=length(Data);
%取大于并接近n的2的幂次方为FFT长度
nfft=2^nextpow2(n);
%nfft=2^fix(log2(n));
%四舍五入取整求最小截止频率对应数据元素的下标
ni=round(fmin*nfft/fs+1);
%四舍五入取整求最大截止频率对应数据元素的下标
na=round(fmax*nfft/fs+1);
%进行FFT变换,结果存于y
y=fft(Data,nfft);
%建立一个长度为nfft元素全为0的向量
a=zeros(1,nfft);
%将y的正频率带通内的元素赋值给a
a(ni:
na)=y(ni:
na);
%将y的负频率带通内的元素赋值给a
a(nfft-na+1:
nfft-ni+1)=y(nfft-na+1:
nfft-ni+1);
%进行FFT逆变换,结果存于y
y=ifft(a,nfft);
%取逆变换的实部nfft个元素为滤波结果列向量
DataLvbo=(real(y(1:
n)))'
6.信号频谱程序(m文件名:
wzfun_PinPu.m):
function[f,X,Xita]=wzfun_PinPu(Data)
wzfun_PinPu
计算信号频谱(幅值谱、相位谱)
[f,X,Xita]=wzfun_PinPu(Data)
振动数据(2*n矩阵;
第1列为时间信号)
f:
频率向量
%X:
幅值向量
%Xita:
相位向量
t=Data(:
2);
n=length(x);
N=2^nextpow2(n);
%取小于并接近n的2的幂次方为FFT长度
%N=2^fix(log2(n));
dt=t
(2)-t
(1);
%dt:
采样间隔
N0=fix(N/2);
f1=(1/dt/N)*(0:
N0-1);
A=fft(x,N);
X_tmp=abs(A);
Xita_tmp=angle(A);
f=f1'
X=X_tmp(1:
N0);
Xita=Xita_tmp(1:
7.计算有效值函数(m文件名:
wzfun_RmsA.m):
functionA_Rms=wzfun_RmsA(Data)
wzfun_RmsA
计算位移、速度、加速度等幅值有效值
A_Rms=wzfun_RmsA(Data)
原始数据(m*2矩阵)
A_Rms:
幅值有效值
%计算有效值
s=0;
fori=1:
Num_ln-1
dt=t(i+1)-t(i);
s=s+x(i)^2*dt;
A_Rms=sqrt(1/t(Num_ln-1)*s);
8.文件保存程序(m文件名:
wzfun_SaveFile.m):
functionwzfun_SaveFile(DataSave,DataFormat)
wzfun_SaveFile
保存数据文件
wzfun_SaveFile(DataSave,DataFormat)
DataSave:
待保存的数据(矩阵)
%DataFormat:
数据保存格式(字符串),示例:
DataFormat='
%3d%5.2f%5.2f\n'
[filename,pathname,filterindex]=uiputfile(FileFilter,'
请输入你要保存的文件名:
WJSave=[pathnamefilename];
%有的MATLAB版本需要如下代码
%WJSave=[pathnamefilenameFileFilter{filterindex}(2:
5)];
fid=fopen(WJSave,'
a+'
文件打开错误'
fprintf(fid,DataFormat,DataSave'
disp(lasterr)
文件数据或数据格式输入错误'
fclose(fid);
fclose(fid);
9.求取最大值函数(m文件名:
wzfun_ZuiZhi.m):
function[x_zby_zz]=wzfun_ZuiZhi(x,y)
wzfun_ZuiZhi
找出最大值
[x_zby_zz]=wzfun_ZuiZhi(x,y)
x:
横坐标向量
%y:
纵坐标向量
x_zb:
横坐标数值
%y_zz:
纵坐标数值
2009.05.05
[y_maxweizhi]=max(y);
x_zb=x(weizhi);
y_zz=y_max;
10.清空窗口及变量空间函数(m文件名:
zz.m):
%函数功能:
清除窗口及变量空间
clc
clear
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 程序