带通采样matlab代码
时间: 2023-10-17 10:06:01 浏览: 149
以下是一个简单的带通采样的MATLAB代码示例:
% 定义信号
t = 0:0.001:10; % 时间向量
x = sin(2*pi*10*t) + sin(2*pi*50*t); % 10Hz和50Hz的正弦波信号
% 定义采样参数
fs = 200; % 采样频率
fpass = [20 30]; % 带通频率
% 带通滤波
[b,a] = butter(2,fpass/(fs/2),'bandpass'); % 2阶带通滤波器
x_filtered = filter(b,a,x); % 滤波后的信号
% 采样
n = 0:1/fs:10; % 采样时间向量
x_sampled = sin(2*pi*10*n) + sin(2*pi*50*n); % 采样后的信号
% 绘图
subplot(2,1,1);
plot(t,x,'b');
hold on;
plot(t,x_filtered,'r');
legend('原始信号','滤波后信号');
xlabel('时间(秒)');
ylabel('幅度');
title('带通滤波');
subplot(2,1,2);
stem(n,x_sampled);
xlabel('时间(秒)');
ylabel('幅度');
title('采样信号');
相关问题
带通采样matlab
带通采样是指对带通信号进行采样和重构的过程。在MATLAB中,可以使用一段代码进行带通采样的仿真实验。首先需要设置采样参数,例如采样频率(Fs)、采样间隔(T)和采样点数(L)。然后生成带通信号,通过设置通带起始频率(fpass)和通带结束频率(fstop)以及时间序列(t)来生成带通信号。接下来进行采样,通过采样时间序列(t_s)和带通信号进行采样得到采样信号(x_s)。然后进行重构,通过设置频率序列(f)和采样信号频谱(X)进行插值重构得到重构信号(x_reconstructed)。最后,可以绘制原始带通信号、采样信号和重构信号的图像。
以下是一段MATLAB代码用于带通采样的仿真实验:
```MATLAB
% 采样参数设置
Fs = 2e3; % 采样频率
T = 1/Fs; % 采样间隔
L = 2^10; % 采样点数
% 生成带通信号
fpass = 100; % 通带起始频率
fstop = 400; % 通带结束频率
t = (0:L-1)*T; % 时间序列
x = sin(2*pi*fpass*t) .* cos(2*pi*fstop*t); % 带通信号
% 采样
t_s = (0:L-1)*T; % 采样时间序列
x_s = sin(2*pi*fpass*t_s) .* cos(2*pi*fstop*t_s); % 采样信号
% 重构
f = (-Fs/2):(Fs/L):(Fs/2-Fs/L); % 频率序列
X = fftshift(abs(fft(x_s))); % 采样信号频谱
X_interp = interp1(t_s, X, t, 'linear', 'extrap'); % 插值
x_reconstructed = ifft(ifftshift(X_interp)); % 重构信号
% 绘制图像
figure;
subplot(3,1,1); plot(t,x); title('原始带通信号'); xlabel('时间'); ylabel('幅值');
subplot(3,1,2); stem(t_s, x_s); title('采样信号'); xlabel('时间'); ylabel('幅值');
subplot(3,1,3); plot(t, x_reconstructed); title('重构信号'); xlabel('时间'); ylabel('幅值');
```
通过运行这段MATLAB代码,可以得到带通采样的仿真结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [【数字信号处理】带通采样定理及其MATLAB仿真](https://blog.csdn.net/weixin_45317919/article/details/131906305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [带通采样定理原理及其MATLAB仿真说明](https://blog.csdn.net/PixelNovaO/article/details/132156383)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
带通采样的matlab代码
以下是一个简单的带通采样的MATLAB代码示例:
```matlab
% 输入信号
fs = 1000; % 采样率为1000 Hz
t = 0:1/fs:1; % 时间向量,采样1秒
f1 = 50; % 信号频率为50 Hz
f2 = 150; % 噪声频率为150 Hz
signal = sin(2*pi*f1*t) + 0.5*sin(2*pi*f2*t); % 输入信号
% 带通滤波器
fc1 = 70; % 低截止频率为70 Hz
fc2 = 130; % 高截止频率为130 Hz
[b,a] = butter(4, [fc1, fc2]/(fs/2), 'bandpass'); % 4阶巴特沃斯带通滤波器
% 采样
fs_new = 200; % 新的采样率为200 Hz
t_new = 0:1/fs_new:1; % 新的时间向量,采样1秒
signal_new = interp1(t, signal, t_new); % 线性插值采样
% 滤波
filtered_signal = filter(b, a, signal_new); % 使用巴特沃斯带通滤波器进行滤波
% 绘图
subplot(2,1,1);
plot(t, signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t_new, filtered_signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Signal');
```
在此示例中,我们首先创建了一个包含50 Hz正弦波和150 Hz噪声的输入信号。然后,我们使用`butter`函数创建了一个4阶巴特沃斯带通滤波器,其低截止频率为70 Hz,高截止频率为130 Hz。接下来,我们将信号采样率从1000 Hz降低到200 Hz,并使用带通滤波器对其进行滤波。最后,我们绘制了原始信号和滤波后的信号的图形,以便进行比较。
阅读全文