在 MATLAB 中进行信号分析通常涉及信号生成 / 导入 → 预处理 → 时域 / 频域 / 时频分析 → 特征提取 / 建模。下面按常见流程和示例说明,适合入门到中等应用。
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
x = sin(2*pi*50*t) + 0.5*sin(2*pi*120*t) + randn(size(t));
data = readtable('signal.csv');
x = data.Value;
fs = 1000;
x = detrend(x);
fc = 100; % 截止频率
[b,a] = butter(4, fc/(fs/2), 'low');
x_filt = filtfilt(b,a,x);
x_denoise = wdenoise(x, 5);
mean(x)
std(x)
rms(x)
[c, lags] = xcorr(x, 'coeff');
plot(lags, c)
N = length(x);
X = fft(x);
f = (0:N-1)*(fs/N);
plot(f(1:N/2), abs(X(1:N/2)))
title('幅度谱')
pwelch(x, [], [], [], fs)
spectrogram(x, 256, 128, 256, fs, 'yaxis')
cwt(x, fs)
% 时域
feat.mean = mean(x);
feat.rms = rms(x);
feat.kurt = kurtosis(x);
% 频域
[P,f] = pwelch(x,[],[],[],fs);
feat.peakf = f(find(P==max(P)));
如果你有具体信号类型(振动 / 语音 / EEG / ECG)或分析目标(去噪 / 故障 / 分类),我可以直接给你针对性代码方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。