📄 mukadepan.m
字号:
function varargout = MukaDepan(varargin)
% MUKADEPAN M-file for MukaDepan.fig
% MUKADEPAN, by itself, creates a new MUKADEPAN or raises the existing
% singleton*.
%
% H = MUKADEPAN returns the handle to a new MUKADEPAN or the handle to
% the existing singleton*.
%
% MUKADEPAN('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MUKADEPAN.M with the given input arguments.
%
% MUKADEPAN('Property','Value',...) creates a new MUKADEPAN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before MukaDepan_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to MukaDepan_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help MukaDepan
% Last Modified by GUIDE v2.5 20-May-2008 10:30:40
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @MukaDepan_OpeningFcn, ...
'gui_OutputFcn', @MukaDepan_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before MukaDepan is made visible.
function MukaDepan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to MukaDepan (see VARARGIN)
% Choose default command line output for MukaDepan
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes MukaDepan wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = MukaDepan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in Load_Data_Tag.
function Load_Data_Tag_Callback(hObject, eventdata, handles)
% hObject handle to Load_Data_Tag (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
warning('off','all');
Co=0.13;
n=1.1;
%The following variables dimention the bearing used in research at Tech
%rpm = str2double(get(handles.RPM,'String'))
%ID = str2double(get(handles.Inner_Dia,'String'));
%OD = str2double(get(handles.Outer_Dia,'String'));
%no_balls = str2double(get(handles.No_Ball,'String'));
%ball_d = str2double(get(handles.Ball_Dia,'String'));
%alphadeg = str2double(get(handles.Alpha_Deg,'String'));
%dm = str2double(get(handles.Pitch_Dia,'String'));
rpm=1750; %[rev/minute] bearing rotation speed
f=rpm/60; %[rev/minute] bearing rotation speed
ID=0.9843; %[inches] inside diameter
OD=2.0472; %[inches] outside diameter
no_balls=19; %[balls] number of balls in the bearing
ball_d=0.3126; %[inches] ball diameter
alphadeg=13.13; %[degrees]
alpha=alphadeg*(pi/180);%[radians] taper angle
dm=1.537; %[inches] pitch diameter
%determine frequencies of ball pass inner_dia race, ball pass outer_dia race,
%and rollers. Defect is on outer_dia race for this research.
f_bpir = no_balls*f/2*(1+(ball_d/dm)*cos(alpha));
f_bpor = no_balls*f/2*(1-(ball_d/dm)*cos(alpha));
f_r = no_balls*(f*dm)/2*(1-((ball_d/dm)*cos(alpha))^2);
f_c =f/2*(1-(ball_d/dm)*cos(alpha));
%Load data and find pertinent parameters
[filename, pathname,X] = ...
uigetfile({'*.mat';'*.*'},'File Selector');
filename = fullfile(pathname, filename);
data = load (filename, '-mat');
%rawdata = load ( file );
%Data1 = load([path02 file02 '.mat']);
%nodes_number = nodes(length(nodes));
%load '12feabnormal.mat';
datas = struct2cell(data);
[p q]=size(datas)
if p>=5
[Y1,Y2,Y3,Y4,Y5] = deal(datas{:});
elseif p>=4
[Y1,Y2,Y3,Y4] = deal(datas{:});
elseif p>=3
[Y1,Y2,Y3] = deal(datas{:});
else
[Y1,Y2] = deal(datas{:});
end
vib_datapoints=length(Y1);
%number of vibration data points
vib=Y1(1:vib_datapoints,1); %pulls out the correct column of data
vib_time=1.0; %[seconds] length of time data was sampled
vib_fs=30000; %[samples/second]sampling frequency
% This is a plot of the raw data
axes(handles.Raw_Tag);
plot(0:1/vib_datapoints:(1-1/vib_datapoints),vib);
set(handles.Raw_Tag,'XMinorTick','on')
%meanvib=mean(vib);
ms=std(vib);
mRMSp=rms(vib);
maxvib=max(vib);
minvib=min(vib);
% mskew=skewness(vib);
% mkurtos=kurtosis(vib);
% mcrestfactor=maxvib/mRMSp;
% mCLF=maxvib/(sum(sqrt(abs(vib)))/vib_datapoints).^2;
mSF=mRMSp/(sum(abs(vib))/vib_datapoints);
% mIF=maxvib/(sum(abs(vib))/vib_datapoints);
title(['raw data'])
xlabel('Time (s)');
ylabel('Acceleration (g)');
% Next step is to find fft/power spectrum
X=fft(vib)/vib_datapoints;
df=vib_fs/vib_datapoints;
%This is a plot of the Power Spectrum (fft(rawdata))
axes(handles.FFT_Tag);
freqvalue=df:df:vib_fs/2-df;
%realplot=freqvalue,abs(X(2:vib_datapoints/2));
plot(freqvalue,abs(X(2:vib_datapoints/2)));
set(handles.FFT_Tag,'XMinorTick','on')
%maxps=max(abs(X(2:vib_datapoints/2)));
title(['Power Spectrum'])
xlabel('Frequency (Hz)');
%Third step of program is to find the envelope spectrum of the data
%This shows the defect location.
%Resonant frequency of the system is around 5500 Hz
Wn_vib=[4000 6000]*2/vib_fs;
cutoff=400;
cutoff_vib=cutoff*2/vib_fs; %cutoff frequency for bandpassed filtration of data
[top,bottom]=butter(5,Wn_vib); %use a butterworth filter for bandpassing
[t,b]=butter(5,cutoff_vib);
xx=filter(top,bottom,vib);
X=fft(vib)/vib_datapoints;
xxx = abs(xx);
xxx=filter(t,b,xxx);
XXX=fft(xxx)/vib_datapoints; %envelope spectrum output
axes(handles.Env_Tag);
plot(df:df:cutoff-df,abs(XXX(2:floor(cutoff/df))));
set(handles.Env_Tag,'XMinorTick','on')
title('Envelope Spectrum w/o ALE');
xlabel('Frequency (Hz)');
maxps=max(abs(X(2:vib_datapoints/2)));
maxen=max(abs(XXX(2:floor(cutoff/df))))
mfreqcentre=sum(freqvalue'.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2))));
mRMSfreq=sqrt(sum(freqvalue'.^2.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2)))));
bezafreq=freqvalue'-mfreqcentre';
%mstdfreq=sqrt(sum(bezafreq.^2.*abs(X(2:vib_datapoints/2))/sum(abs(X(2:vib_datapoints/2)))))
save test m*
load fnet;
datad=load ('test.mat');
datac=datad;
[R Q] = size (datac);
newdata = struct2cell(datac);
[Ri S T U V W Xi Y Z ]=deal(newdata{:});
P1 = Ri;
P2 = S;
P3 = T;
P4 = U;
P5 = V;
P6 = W;
P7 = Xi;
P8 = Y;
P9 = Z;
for i=1:R
datai(1,i)=P1(i);
datai(2,i)=P2(i);
datai(3,i)=P3(i);
datai(4,i)=P4(i);
datai(5,i)=P5(i);
datai(6,i)=P6(i);
datai(7,i)=P7(i);
datai(8,i)=P8(i);
datai(9,i)=P9(i);
end
datai=datai
[N M]=size(datai);
nmax=[0.66911 0.66951 6.6529 -0.21819 2.0535 0.12064 0.01222 8260 8604];
nmin=[0.06315 0.06433 0.28372 -6.6533 1.2399 0.00999 0.00013 3028.5 4166.2];
% % actual_data = normalise(datai,nmax,nmin);
% % for i=1:N
% % nmax(i)=datai(i,N-1);
% % nmin(i)=datai(i,N-1);
% for j=1:M
% if datai(j)>nmax
% nmax=datai(j)
% end
% if datai(j)<nmin
% nmin=datai(j)
% end
% end
% % end
% num = data - nmin';
%dem=nmax - nmin';
% datae = num/dem; % no delay
anu=(datai(:)-nmin(:));
ana=(nmax(:)-nmin(:));
datas =anu./ana
%datad(i,1:M-1)=datai(i,2:M); % 1 delayed term
%datad1(i,1:M-2)=datai(i,3:M); % 2 delayed term
%open('E:\bahan¬a\dataset matlab\thesis\adaptive prognosis\newdata.mat');
%datae=[R S T U V W Xi Y Z ]';
%datae(:)=(datae(:)-min(i))/(max(i)-min(i)); % no delay
%datae={ans.maxps ans.maxvib ans.minvib ans.meanvib ans.ms ans.maxen ans.mcov ans.mmedian ans.mvar'}
bn=sim(fnet,datas)
%datam = getappdata(gcbf, 'metricdata')
%datam.an = an
%setappdata(hObject, 'mydata', datam)
%setappdata(gcbf, 'metricdata', datam)
%handles.my_data = an
%guidata(hObject,handles)
%datam = getappdata(gcbf, 'metricdata')
NV = round(bn)
warning1 = 'Normal';
warning2 = 'Ball damage';
warning3 = 'Inner damage';
warning4 = 'Outer damage';
% warning5 = '0.14 Ball damage';
% warning6 = '0.14 Inner damage';
% warning7 = '0.14 Outer damage';
% warning8 = '0.21 Ball damage';
% warning9 = '0.21 Inner damage';
% warning10 = '0.21 Outer damage';
if bn >=0
set(handles.Warn_Tag,'String',warning1)
if bn >= .25
set(handles.Warn_Tag,'String',warning2)
if bn >= .5
set(handles.Warn_Tag,'String',warning3)
if bn >= .75
set(handles.Warn_Tag,'String',warning4)
% if NV >= 5
% set(handles.Warn,'String',warning5)
%
% if NV >= 6
% set(handles.Warn,'String',warning6)
%
% if NV >= 7
% set(handles.Warn,'String',warning7)
%
% if NV >= 8
% set(handles.Warn,'String',warning8)
%
% if NV >= 9
% set(handles.Warn,'String',warning9)
%
% if NV >= 10
% set(handles.Warn,'String',warning10)
end
end
end
end
% end
% end
% end
% end
% end
% end
% --- Executes on button press in Reset_Tag.
function Reset_Tag_Callback(hObject, eventdata, handles)
% hObject handle to Reset_Tag (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
initialize_gui(gcbf, handles);
function initialize_gui(fig_handle, handles)
%set(handles.vibration,'HandleVisibility','off')
%set(handles.PowerSpectrum,'HandleVisibility','off')
%set(handles.Envelope,'HandleVisibility','off')
set(handles.Warn,'String',0);
function Warn_Tag_Callback(hObject, eventdata, handles)
% hObject handle to Warn_Tag (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Warn_Tag as text
% str2double(get(hObject,'String')) returns contents of Warn_Tag as a double
% --- Executes during object creation, after setting all properties.
function Warn_Tag_CreateFcn(hObject, eventdata, handles)
% hObject handle to Warn_Tag (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -