全相FFT
作者:桂。
时间:2017-12-02 23:29:48
链接:http://www.cnblogs.com/xingshansi/p/7956491.html
一、相位提取
以正弦信号为例,x = sin(2pi*f*t+pi),希望提取phi:
思路1:通过Hilbert变化解决
思路2:借助FFT,利用插值思想,估计Phi;
思路3:借助全相FFT(apFFT, all phase FFT)实现。
思路三可提取信号相位,这一点FFT做不到,而相位信息通常可判断相位调制类型,可用于情报的脉内检测。
全相FFT思路:
- 选定N点窗,如hanning
- 窗函数自相关,并归一化
- 对2N-1序列x(n)加窗,
- 将2N-1个点,每间隔N点相加
- FFT实现
二、仿真验证
clc;clear all;close all; fs = 1e9;
fo = 200e6;
t = 0:1/fs:1023/fs;
tao = 0.3/3e8*sind(45);
SNR = 20;
ch1 = awgn(sin(2*pi*t*fo),SNR) ;
ch2 = awgn(sin(2*pi*t*fo + 2*pi*tao*fo),SNR);
% ch1 = sin(2*pi*t*fo) ;
% ch2 = sin(2*pi*t*fo + 0.5);
pha = angle(hilbert(ch2))-angle(hilbert(ch1));
figure()
subplot 211
plot(t*fs,pha);
subplot 212
plot(t(1:512)*fs,abs(fft(ch1(1:512))),'r--');hold on;
%FFT提取相位
pha1 = angle(fft(ch1(1:512)).*fft(ch2(1:512)));
figure()
subplot 211
plot(t(1:512)*fs,pha1);
subplot 212
plot(t(1:512)*fs,abs(fft(ch1(1:512))),'r--');hold on;
%apFFT提取相位
win = hanning(512)';
win1 = conv(win,win);
win1 = win1/sum(win1);
y1 = ch1(1:1023).*win1;
y2 = ch2(1:1023).*win1;
out1 = [0,y1(1:511)]+y1(512:1023);
out2 = [0,y2(1:511)]+y2(512:1023);
pha2 = angle(fft(out1).*conj(fft(out2)));
figure()
subplot 211
plot(t(1:512)*fs,pha2);
subplot 212
plot(t(1:512)*fs,abs(fft(ch1(1:512))),'r--');hold on;
[~,pos] = max(abs(fft(ch1(1:512))));
[pha2(pos) mean(pha) ;-pi+ 2*pi*tao*fo 2*pi*tao*fo]
theta_est = asind((pha2(pos))/2/pi/fo/0.3*3e8)+90;
abs(theta_est-45)
另外,频谱细化,可借助zoom-FFT:
fs = 2048;
T = 100;
t = 0:1/fs:T;
x = 30 * cos(2*pi*110.*t) + 30 * cos(2*pi*111.45.*t) + 25*cos(2*pi*112.3*t) + 48*cos(2*pi*113.8.*t)+50*cos(2*pi*114.5.*t);
[f, y] = zfft(x, 109, 115, fs);
plot(f, y); function [f, y] = zfft(x, fi, fa, fs)
% x为采集的数据
% fi为分析的起始频率
% fa为分析的截止频率
% fs为采集数据的采样频率
% f为输出的频率序列
% y为输出的幅值序列(实数) f0 = (fi + fa) / 2; %中心频率
N = length(x); %数据长度 r = 0:N-1;
b = 2*pi*f0.*r ./ fs;
x1 = x .* exp(-1j .* b); %移频 bw = fa - fi; B = fir1(32, bw / fs); %滤波 截止频率为0.5bw
x2 = filter(B, 1, x1); c = x2(1:floor(fs/bw):N); %重新采样
N1 = length(c);
f = linspace(fi, fa, N1);
y = abs(fft(c)) ./ N1 * 2;
y = circshift(y, [0, floor(N1/2)]); %将负半轴的幅值移过来
end
参考:Digital Receiver-based Electronic Intelligence System Configuration for the Detection and Identification of Intrapulse Modulated Radar Signals
全相FFT的更多相关文章
- 中国VR公司的详尽名单
中国VR公司的详尽名单 <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...
- BUGKUctf-web-writeup
---恢复内容开始--- 找到了个ctf平台.里面的web挺多的.终于将web题目写的差不多了. Web 签到题 加群就可以了 Web2 直接F12就看到了 文件上传测试 Burp抓包 文件名改成 1 ...
- 爬虫笔记之刷小怪练级:yymp3爬虫(音乐类爬虫)
一.目标 爬取http://www.yymp3.com网站歌曲相关信息,包括歌曲名字.作者相关信息.歌曲的音频数据.歌曲的歌词数据. 二.分析 2.1 歌曲信息.歌曲音频数据下载地址的获取 随便打开一 ...
- NATS源代码之logger目录
nats的logger目录文件如下 log.go syslog.go syslog_windows.go 基于golang语言的logger包实现日志功能. Golang的log包短小精悍,可以非常轻 ...
- IntelliJ IDEA 基本配置入门
前言:今天下载安装IntelliJ IDEA.随手创建了一个项目,运行Build提示错误. 与大多数用于开发JAVA的IDE类似,不做不论什么配置.编译是不会成功的.因此我尝试对IDEA的配置进行了一 ...
- ORB-SLAM2:一种开源的VSLAM方案(译文)
摘要: ORB-SLAM2是基于单目,双目和RGB-D相机的一套完整的SLAM方案.它能够实现地图重用,回环检测和重新定位的功能.无论是在室内的小型手持设备,还是到工厂环境的无人机和城市里驾驶的汽车, ...
- JAVA语 言 的 特 点
Java到 底 是 一 种 什 么 样 的 语 言 呢? Java是 一 种 简 单 的 面 象 对 象 的 分 布 式 的 解 释 的 健 壮 的 安 全 的 结 构 中 立 的 可 移 植 的 性 ...
- JSP———数据交互【1】
JSP的内置对象 不用声明就可以在JSP页面中使用 request对象 内置对象 request 封装了用户提交的信息,主要用于处理客户端请求 <FORM action="tom.js ...
- 利用pandas、Ipython来简化数据分析过程
最近小爬我为了提升数据分析这块儿的技能,学习了pandas库作者Wes Mckinney的数据分析经典书籍<利用Python进行数据分析>,受益良多!里面涉及到Python语言基础.还有编 ...
随机推荐
- Eclipse使用Maven创建Dynamic Web Project
1. 点击File->New->Other,在弹出的对话框中选择Maven->Maven Project: 2. 点击Next,选择maven-archetype-webapp: 3 ...
- Docker 命令导图
- 3、redis之java client环境搭建
JAVA Client环境搭建 POM: <dependency> <groupId>redis.clients</groupId> <artifactId& ...
- django之 文件上传功能(缺陷:无法改存放目录)
百度云盘:django之 文件上传功能(缺陷:无法改存放目录)
- oracle初始化化表空间用户权限
oracle单实例安装完毕,需要初始化表空间.用户.等信息.不积跬步,何以至千里! 用sys账户登录oracle数据库,以此来完成所有操作! 01.创建临时表空间 create temporary t ...
- 【php】分享一个php转换微信、QQ、微博 特殊非主流 | 杀马特 网名的 function
1.实现的效果: 2.将上面带有图标.非主流的文字,转换成utf-8格式,能存进去和读出来. 3.code: function emoji_encode($nickname){ $strEncode ...
- Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制
前面八节 在这里 Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 在接下来的 几节里面 我们完成登录功能 打开页面 首先进入登录页面 只有登录成功了 才能进入管理 ...
- 有可能挑战Java优势的四种技术
2012-02-22 Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注.但是和所有语言一样,Java将来也会褪色.依据我做的超越Java的研究,一个 ...
- [转载]Error starting Sun's native2ascii:
原文地址:Error starting Sun's native2ascii:作者:大一吧浪 Error starting Sun's native2ascii: at org.apache.tool ...
- python+stomp+activemq
python也可以连接MQ,以ActiveMQ为例,安装stomp.py: https://github.com/jasonrbriggs/stomp.py 下载后安装: python setup.p ...