FFT测距代码matlab
时间: 2023-07-09 08:33:21 浏览: 101
matlab_P码的匹配滤波+FFT的捕获程序。可以用于P码的直接捕获
5星 · 资源好评率100%
下面是一个使用FFT测距的示例MATLAB代码:
```matlab
% 生成测试信号
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间序列
f1 = 50; % 信号频率
f2 = 120; % 信号频率
s1 = sin(2*pi*f1*t); % 信号1
s2 = sin(2*pi*f2*t); % 信号2
s = s1 + s2; % 信号合成
% 绘制时域波形
figure;
subplot(2, 1, 1);
plot(t, s);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain');
% FFT变换
N = length(s);
freqs = (0:N-1) * fs / N;
fft_result = fft(s);
fft_db = 20 * log10(abs(fft_result));
% 绘制频域波形
subplot(2, 1, 2);
plot(freqs, fft_db);
xlim([0, fs/2]);
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
title('Frequency Domain');
% 寻找信号频率
[~, max_idx] = max(fft_db(1:N/2)); % 取前一半的频谱
freq = freqs(max_idx);
% 计算距离
c = 3e8; % 光速
d = c / (2 * freq); % 单程距离
disp(['The distance is:', num2str(d), ' m']);
```
这个代码与Python版本的代码非常相似,生成了两个频率为50Hz和120Hz的正弦信号,并将它们合成为一个信号。然后,它进行FFT变换,绘制了信号的频域波形,并计算了信号的主频率和距离。
阅读全文