提取4FSK信号包络的峰值和谷值的matlab
时间: 2023-06-18 09:03:33 浏览: 64
可以使用MATLAB中的信号处理工具箱中的envelope函数来提取4FSK信号的包络,然后通过findpeaks函数来查找包络中的峰值和谷值。
以下是一个简单的示例代码:
```matlab
% 生成4FSK信号
Fs = 1000; % 采样率
f0 = 100; % 起始频率
f1 = 200; % 终止频率
t = 0:1/Fs:1-1/Fs; % 时域
data = randi([0 3],1,length(t)); % 随机生成调制数据
f = f0 + data*(f1-f0)/3; % 生成4FSK信号
x = cos(2*pi*f.*t);
% 提取包络
env = abs(hilbert(x));
[b,a] = butter(4,0.05,'low'); % 低通滤波器
env_filt = filter(b,a,env);
% 查找峰值和谷值
[peaks,locs] = findpeaks(env_filt);
[valleys,locs] = findpeaks(-env_filt);
valleys = -valleys;
% 绘制图形
plot(t,x,'b',t,env_filt,'r',t(locs),peaks,'k^',t(locs),valleys,'kv');
legend('原始信号','包络','峰值','谷值');
xlabel('时间');
ylabel('幅度');
```
代码中使用了hilbert函数来计算信号的解析信号,并通过abs函数取解析信号的幅度,得到信号的包络。然后使用butter函数设计了一个4阶低通滤波器,将高频噪声滤除。最后使用findpeaks函数来查找包络中的峰值和谷值,并绘制图形。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)