用matlab编写多段时域平均
时间: 2023-05-25 20:04:32 浏览: 313
时域平均Matlab程序
5星 · 资源好评率100%
以下是用MATLAB编写多段时域平均的示例代码:
```matlab
% 生成随机信号
fs = 1000; % 采样率
f = 10; % 信号频率
t = 0:1/fs:1; % 时间向量
x = sin(2*pi*f*t) + 0.5*randn(size(t)); % 生成信号
% 定义分段长度和重叠长度
N = 200; % 分段长度
M = 50; % 重叠长度
% 计算分段数
L = length(x);
num_segments = floor((L-N)/(N-M))+1;
% 分段时域平均
for i = 1:num_segments
idx_start = (i-1)*(N-M)+1; % 分段起始位置
idx_end = idx_start+N-1; % 分段结束位置
if idx_end > L % 处理最后一段的情况
idx_end = L;
idx_start = idx_end-N+1;
end
segment = x(idx_start:idx_end); % 获取当前分段信号
if i == 1
seg_avg = zeros(1,length(segment));
end
seg_avg = seg_avg + segment; % 累加分段信号
end
% 计算平均值
seg_avg = seg_avg / num_segments;
% 绘制结果
figure;
subplot(2,1,1);
plot(t,x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t(1:length(seg_avg)),seg_avg);
xlabel('Time (s)');
ylabel('Amplitude');
title('Segmented and Averaged Signal');
```
在这个例子中,我们使用了一个10 Hz正弦波和高斯白噪声混合的随机信号。我们使用一个200个样本的分段长度,并设置50个样本的重叠长度。我们计算了分段信号的平均值,并绘制了原始信号和平均信号的比较。
请注意,这里的代码只是一个简单的示例,您可能需要根据自己的数据和需求进行修改。
阅读全文