Matlab 信号处理

最近需要用到 Matlab 仿真雷达成像 😀
对于一些函数的细节还是有挺多地方需要注意的 ☁️

首先,有问题可以之间参考 官方文档


1. FFT

需要理解以下几个问题:

Q:为什么需要使用 fftshift
Qfft 返回的序列的每个分量分别代表什么频率(数字频率和物理频率的联系)

笔记贴图(不想打字) ▪️ ▫️ (对了,这个是官方给的例子) ▪️ ▫️



问题答案(个人理解)

A:卷积具有周期性,平移后能够更直观的显示频谱

A:序列长度为 N N N,fft 输出序列长度也是 N N N,则 fft 的第 k 个分量对应的数字频率为 2 π N k \frac{2 \pi}{N} k N2πk,对应物理频率为 k N × F s \frac{k}{N} \times F_s Nk×Fs,因此 fft 的频率分辨率 F s N \frac{F_s}{N} NFs,序列越长,频率分辨率越高,频谱越精细。

遗留问题

x2 = linspace(1, 3, 3);
fft(x2)
fft(x2, 6)

fft(x2, 6) 的输出是否等价于 fft(x2) + 插值



2. 卷积

2.1 时域计算卷积

卷积表达式:
g ( n ) = x ( n ) ∗ y ( n ) = ∑ n = − ∞ + ∞ x ( m ) × y ( n − m ) g(n) = x(n)*y(n) = \sum_{n=-\infin}^{+\infin} {x(m)\times y(n-m)} g(n)=x(n)y(n)=n=+x(m)×y(nm)
可以使用 conv 计算卷积:

clc
x1 = linspace(1, 4, 4);
x2 = linspace(1, 3, 3);
y1 = conv(x1, x2)      
% 1  4  10  16  17  12

2.2 频域计算卷积

N = length(x1) + length(x2) - 1;
Nfft = 2^nextpow2(N);
y2 = ifft(fft(x1, Nfft).*fft(x2, Nfft)) 
% 1.0000  4.0000 10.0000 16.0000 17.0000 12.0000 0 -0.0000

两种方法输出一样,只是后者尾部多了零(原因还未弄清楚,学完 DSP 补上)



3. 频域相关运算

相关运算
r x y ( m ) = ∑ n = − ∞ + ∞ x ∗ ( n ) × y ( n + m ) r_{xy}(m) = \sum_{n=-\infin}^{+\infin} {x^*(n)\times y(n+m)} rxy(m)=n=+x(n)×y(n+m)

对序列做相关运算可以之间调用 xcorr 函数

x1 = linspace(1, 12, 12);
x2 = linspace(1, 8, 8);
y1 = xcorr(x1, x2)

也可以使用卷积计算互相关函数:

r x y ( m ) = x ∗ ( − m ) ∗ y ( m ) r_{xy}(m) = x^*(-m)*y(m) rxy(m)=x(m)y(m)

也可以在频域做相关运算
r x y ( m ) = f − 1 ( f ( x 1 ) × f ∗ ( x 2 ) ) r_{xy}(m) =f^{-1}(f(x_1) \times f^{*}(x_2)) rxy(m)=f1(f(x1)×f(x2))

matlab 程序

x1 = linspace(1, 12, 12);
x2 = linspace(1, 8, 8);
y1 = xcorr(x1, x2)

N = length(x1) + length(x2) - 1;
Nfft = 2^nextpow2(N);
cor = fftshift(ifft(fft(x1, Nfft).*conj(fft(x2, Nfft))));
range = Nfft/2+1 - (N-1)/2 : Nfft/2+1 + (N-1)/2;
y2 = cor(range)

注意,下面两种写法不等价:

cor_xy = fftshift(ifft(fft(X).*conj(fft(Y))))
cor_yx = fftshift(ifft(fft(Y).*conj(fft(X))))
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值