matlab求解序列 x(n) = 2cos(10Πn =+ 2),0= < n =<1999 受随机噪声干扰后和序列 h(n) = cos(10Πn) ,0= < n =<1999的线性相关。
时间: 2024-10-24 09:05:24 浏览: 42
在MATLAB中,你可以通过以下步骤求解给定的序列 `x(n)` 和 `h(n)` 的线性相关:
1. **创建信号**:首先创建 `x(n)` 和 `h(n)` 的向量。`x(n) = 2*cos(2\*pi*(10*n + 2)/Fs)`,其中 `Fs` 是采样率。`h(n) = cos(2\*pi*10*n/Fs)` 是未受噪声影响的纯余弦信号。
```matlab
Fs = 100; % 采样率
N = 2000; % 序列长度
n = (0:N-1)';
x = 2*cos(2*pi*(10*n + 2)/Fs);
h = cos(2*pi*10*n/Fs);
```
2. **添加随机噪声**:使用 `randn` 函数生成等同于 `x` 长度的正态分布噪声,然后将噪声加到 `x` 上得到 `x1`。
```matlab
r = randn(size(x));
x1 = x + r;
```
3. **计算线性相关**:使用 `xcorr` 函数计算 `x1` 和 `h` 之间的相关系数。注意,`xcorr` 默认返回整个序列,所以不需要选择特定的部分。
```matlab
correlation = xcorr(x1, h);
```
4. **可视化结果**:最后,可以使用 `plot` 函数绘制相关系数随时间的变化图。
```matlab
figure;
t = (0:length(correlation)-1)./Fs; % 时间轴
plot(t, correlation, 'b');
xlabel('Time (s)');
ylabel('Correlation Coefficient');
title('Linear Correlation of Noisy Signal with Original Cosine Signal');
```
5. **时间消耗**:如果你关心计算速度,可以用 `tic-toc` 计算整个过程的时间。
```matlab
tic;
[~, corr_time] = xcorr(x1, h);
corr_time = toc;
disp(['总计算时间 (s):', num2str(corr_time)]);
```
阅读全文