在故障诊断中,振动信号的时频域特征是识别和分类故障的重要依据。MATLAB 程序用于计算振动信号的时频域特征,包括时域特征和频域特征,最终得到特征向量。
MATLAB 代码
1. 时域特征计算
时域特征包括均值、方差、标准差、偏度、峰度等。
function time_features = calculate_time_features(signal)
% 计算时域特征
mean_value = mean(signal);
variance_value = var(signal);
std_value = std(signal);
skewness_value = skewness(signal);
kurtosis_value = kurtosis(signal);
% 组合时域特征向量
time_features = [mean_value, variance_value, std_value, skewness_value, kurtosis_value];
end
2. 频域特征计算
频域特征包括信号的频谱、功率谱密度、频谱中心、频谱带宽等。
function freq_features = calculate_freq_features(signal, fs)
% 计算频域特征
N = length(signal);
f = (0:N-1) * (fs / N);
signal_fft = fft(signal);
signal_fft = signal_fft(1:N/2+1);
signal_fft = signal_fft / N;
% 计算功率谱密度
psd = abs(signal_fft).^2;
psd = 10 * log10(psd);
% 计算频谱中心
centroid = sum(f .* psd) / sum(psd);
% 计算频谱带宽
bandwidth = sqrt(sum((f - centroid).^2 .* psd) / sum(psd));
% 组合频域特征向量
freq_features = [centroid, bandwidth, max(psd), min(psd), mean(psd), var(psd)];
end
3. 特征向量组合
将时域特征和频域特征组合成一个特征向量。
function feature_vector = calculate_feature_vector(signal, fs)
% 计算时域特征
time_features = calculate_time_features(signal);
% 计算频域特征
freq_features = calculate_freq_features(signal, fs);
% 组合特征向量
feature_vector = [time_features, freq_features];
end
4. 主程序
读取振动信号数据,计算特征向量。
function main()
% 读取振动信号数据
signal = read_vibration_data('vibration_signal.mat'); % 假设数据存储在 .mat 文件中
fs = 1000; % 采样频率
% 计算特征向量
feature_vector = calculate_feature_vector(signal, fs);
% 显示特征向量
disp('特征向量:');
disp(feature_vector);
end
function signal = read_vibration_data(filename)
% 读取振动信号数据
data = load(filename);
signal = data.signal;
end