用matlab计算时序数据的时域、频域特征,附代码
时间: 2024-05-19 07:11:03 浏览: 151
以下是一段计算时序数据时域和频域特征的MATLAB代码:
%% 读取数据
data = load('data.txt'); % 读取数据文件
%% 时域特征
mean_val = mean(data); % 平均值
std_val = std(data); % 标准差
max_val = max(data); % 最大值
min_val = min(data); % 最小值
rms_val = rms(data); % 均方根
peak_val = max(abs(data)); % 峰值
%% 频域特征
L = length(data); % 数据长度
Fs = 1000; % 采样频率
Y = fft(data); % 傅里叶变换
P2 = abs(Y/L); % 双边频谱
P1 = P2(1:L/2+1); % 单边频谱
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L; % 频率向量
[max_amp, max_index] = max(P1); % 最大幅值及其频率
total_power = bandpower(data,Fs,[0 Fs/2]); % 总功率
band_power = bandpower(data,Fs,[8 12]); % 8~12 Hz带内功率
%% 输出结果
fprintf('时域特征:\n');
fprintf('平均值:%.4f\n', mean_val);
fprintf('标准差:%.4f\n', std_val);
fprintf('最大值:%.4f\n', max_val);
fprintf('最小值:%.4f\n', min_val);
fprintf('均方根:%.4f\n', rms_val);
fprintf('峰值:%.4f\n\n', peak_val);
fprintf('频域特征:\n');
fprintf('最大幅值:%.4f,频率:%.4f Hz\n', max_amp, f(max_index));
fprintf('总功率:%.4f\n', total_power);
fprintf('8~12 Hz带内功率:%.4f\n', band_power);
其中,data.txt为存储时序数据的文本文件,每行为一个数据。代码中使用MATLAB内置函数计算了时域特征(平均值、标准差、最大值、最小值、均方根、峰值)和频域特征(最大幅值及其频率、总功率、8~12 Hz带内功率)。
阅读全文