% 假设您已经有了时域数据,存储在名为"signal"的向量中
data=load('C:\Users\jiema\Desktop\ys2.txt');
% data=load('C:\Users\jiema\Downloads\运输2.txt');
x=data(:,1);
y=data(:,2);%读取Y轴数据
signal =y
rms1=rms(y)
% 假设您已经有了时域数据,存储在名为"signal"的向量中
% 假设您已有一个频域信号的幅度谱数据
f = fft(signal);
frequency_spectrum = abs(f);
pha = angle(f);
time_domain_signal2 = ifft(frequency_spectrum);
rms2=rms(time_domain_signal2)
%将1hz以下幅值改为0 1Hz/800Fs*点数,傅里叶变换对称,所以尾巴也变成0
frequency_spectrum(1:1021) = 0
frequency_spectrum(815774-1021:815774) = 0
% 将频域信号转换为时域信号
% f2 = frequency_spectrum.*exp(1j*pha); % 根据幅值谱和相位谱重建频域信号
% time_domain_signal = ifft(f2);
time_domain_signal = ifft(frequency_spectrum);
rms3=rms(time_domain_signal)
% 计算时域信号的平方
squared_signal = abs(time_domain_signal).^2;
% 计算信号的平均能量
average_energy = mean(squared_signal);
% 计算RMS值
rms_value = sqrt(average_energy);
disp(['RMS:', num2str(rms_value)]);
disp(['RMS1 原数据:', num2str(rms1)]);
disp(['RMS2 全频:', num2str(rms2)]);
disp(['RMS >1Hz频段值:', num2str(rms3)]);
用matlabl直接滤波,输出大于1Hz频带RMS
该代码片段展示了如何在MATLAB中对时域数据进行快速傅里叶变换(FFT)以获取频域表示,计算RMS值,然后通过逆FFT(IFFT)将频域信号转换回时域。同时,它还涉及到频谱的截断以及计算信号的平均能量。
摘要由CSDN通过智能技术生成