如何用Matlab产生宽频时域信号 5C

使用matlab产生频率为0--50KHz的宽频时域信号,是先产生频域信号再通过IFFT变为时域信号吗?最好能给出代码或思路。

1个回答

拷到你的Matlab里,名字就叫OFDM_Demo好了。不光有你上面的,还有星座图,等等。
clear all;
close all;
carrier_count=200;%子载波数
symbols_per_carrier=12;%每子载波含符号数
bits_per_symbol=4;%每符号含比特数,16QAM调制
IFFT_bin_length=512;%FFT点数
PrefixRatio=1/4;%保护间隔与OFDM数据的比例 1/6~1/4
GI=PrefixRatio*IFFT_bin_length ;%每一个OFDM符号添加的循环前缀长度为1/4*IFFT_bin_length 即保护间隔长度为128
beta=1/32;%窗函数滚降系数
GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度20
SNR=15; %信噪比dB
%==================================================
%================信号产生===================================
baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;%所输入的比特数目
carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2));%共轭对称子载波映射 复数数据对应的IFFT点坐标
conjugate_carriers = IFFT_bin_length - carriers + 2;%共轭对称子载波映射 共轭复数对应的IFFT点坐标
rand( 'state',0);
baseband_out=round(rand(1,baseband_out_length));%输出待调制的二进制比特流
%==============16QAM调制====================================
complex_carrier_matrix=qam16(baseband_out);%列向量
complex_carrier_matrix=reshape(complex_carrier_matrix',carrier_count,symbols_per_carrier)';%symbols_per_carrier*carrier_count 矩阵
figure(1);
plot(complex_carrier_matrix,'*r');%16QAM调制后星座图
axis([-4, 4, -4, 4]);
grid on
%=================IFFT===========================
IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);%添0组成IFFT_bin_length IFFT 运算
IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号 ,子载波映射在此处
IFFT_modulation(:,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射
%========================================================
figure(2);
stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)),'b*-')%第一个OFDM符号的频谱
grid on
axis ([0 IFFT_bin_length -0.5 4.5]);
ylabel('Magnitude');
xlabel('IFFT Bin');
title('OFDM Carrier Frequency Magnitude');
figure(3);
plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bin_length)), 'go')
hold on
stem(0:carriers-1, (180/pi)*angle(IFFT_modulation(2,1:carriers)),'b*-');%第一个OFDM符号的相位
stem(0:conjugate_carriers-1, (180/pi)*angle(IFFT_modulation(2,1:conjugate_carriers)),'b*-');
axis ([0 IFFT_bin_length -200 +200])
grid on
ylabel('Phase (degrees)')
xlabel('IFFT Bin')
title('OFDM Carrier Phase')
%=================================================================
signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制 即IFFT变换
time_wave_matrix =signal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N个子载波映射在其内,每一行即为一个OFDM符号
figure(4);
subplot(3,1,1);
plot(0:IFFT_bin_length-1,time_wave_matrix(2,:));%第一个符号的波形
axis([0, 700, -0.2, 0.2]);
grid on;
ylabel('Amplitude');
xlabel('Time');
title('OFDM Time Signal, One Symbol Period');
%===========================================================
%=====================添加循环前缀与后缀====================================
XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);
for k=1:symbols_per_carrier;
for i=1:IFFT_bin_length;
XX(k,i+GI)=signal_after_IFFT(k,i);
end
for i=1:GI;
XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀
end
for j=1:GIP;
XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀
end
end
time_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660
subplot(3,1,2);
plot(0:length(time_wave_matrix_cp)-1,time_wave_matrix_cp(2,:));%第一个符号添加循环前缀后的波形
axis([0, 700, -0.2, 0.2]);
grid on;
ylabel('Amplitude');
xlabel('Time');
title('OFDM Time Signal with CP, One Symbol Period');
%==============OFDM符号加窗==========================================
windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);
for i = 1:symbols_per_carrier
windowed_time_wave_matrix_cp(i,:) = real(time_wave_matrix_cp(i,:)).*rcoswindow(beta,IFFT_bin_length+GI)';%加窗 升余弦窗
end
subplot(3,1,3);
plot(0:IFFT_bin_length-1+GI+GIP,windowed_time_wave_matrix_cp(2,:));%第一个符号的波形
axis([0, 700, -0.2, 0.2]);
grid on;
ylabel('Amplitude');
xlabel('Time');
title('OFDM Time Signal Apply a Window , One Symbol Period');
%========================生成发送信号,并串变换==================================================
windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);
windowed_Tx_data(1:IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:);
for i = 1:symbols_per_carrier-1 ;
windowed_Tx_data((IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matrix_cp(i+1,:);%并串转换,循环后缀与循环前缀相叠加
end
%=======================================================
Tx_data_withoutwindow =reshape(time_wave_matrix_cp',(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)';%没有加窗,只添加循环前缀与后缀的串行信号
Tx_data =reshape(windowed_time_wave_matrix_cp',(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)';%加窗后 循环前缀与后缀不叠加 的串行信号
%=================================================================
temp_time1 = (symbols_per_carrier)*(IFFT_bin_length+GI+GIP);%加窗后 循环前缀与后缀不叠加 发送总位数
figure (5)
subplot(2,1,1);
plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加 发送的信号波形
grid on
ylabel('Amplitude (volts)')
xlabel('Time (samples)')
title('OFDM Time Signal')
temp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP;
subplot(2,1,2);
plot(0:temp_time2-1,windowed_Tx_data);%循环后缀与循环前缀相叠加 发送信号波形
grid on
ylabel('Amplitude (volts)')
xlabel('Time (samples)')
title('OFDM Time Signal')
%=================未加窗发送信号频谱==================================
symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行
avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号
averages = floor(temp_time1/avg_temp_time);
average_fft(1:avg_temp_time) = 0;%分成5段
for a = 0:(averages-1)
subset_ofdm = Tx_data_withoutwindow (((a*avg_temp_time)+1):((a+1)*avg_temp_time));%
subset_ofdm_f = abs(fft(subset_ofdm));%将发送信号分段求频谱
average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加
end
average_fft_log = 20*log10(average_fft);
figure (6)
subplot(2,1,1);
plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)%归一化 0/avg_temp_time : (avg_temp_time-1)/avg_temp_time
hold on
plot(0:1/IFFT_bin_length:1, -35, 'rd')
grid on
axis([0 0.5 -40 max(average_fft_log)])
ylabel('Magnitude (dB)')
xlabel('Normalized Frequency (0.5 = fs/2)')
title('OFDM Signal Spectrum without windowing')
%===============加窗的发送信号频谱=================================
symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行
avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号
averages = floor(temp_time1/avg_temp_time);
average_fft(1:avg_temp_time) = 0;%分成5段
for a = 0:(averages-1)
subset_ofdm = Tx_data(((a*avg_temp_time)+1):((a+1)*avg_temp_time));%利用循环前缀后缀未叠加的串行加窗信号计算频谱
subset_ofdm_f = abs(fft(subset_ofdm));%分段求频谱
average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加
end
average_fft_log = 20*log10(average_fft);
subplot(2,1,2)
plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)%归一化 0/avg_temp_time : (avg_temp_time-1)/avg_temp_time
hold on
plot(0:1/IFFT_bin_length:1, -35, 'rd')
grid on
axis([0 0.5 -40 max(average_fft_log)])
ylabel('Magnitude (dB)')
xlabel('Normalized Frequency (0.5 = fs/2)')
title('Windowed OFDM Signal Spectrum')
%====================添加噪声============================================
Tx_signal_power = var(windowed_Tx_data);%发送信号功率
linear_SNR=10^(SNR/10);%线性信噪比
noise_sigma=Tx_signal_power/linear_SNR;
noise_scale_factor = sqrt(noise_sigma);%标准差sigma
noise=randn(1,((symbols_per_carrier)*(IFFT_bin_length+GI))+GIP)*noise_scale_factor;%产生正态分布噪声序列
%noise=wgn(1,length(windowed_Tx_data),noise_sigma,'complex');%产生复GAUSS白噪声信号
Rx_data=windowed_Tx_data +noise;%接收到的信号加噪声
%=====================接收信号 串/并变换 去除前缀与后缀==========================================
Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);
for i=1:symbols_per_carrier;
Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换
end
Rx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_length+GI);%去除循环前缀与循环后缀,得到有用信号矩阵
%============================================================%================================================================
%==============================================================
% OFDM解码 16QAM解码
%=================FFT变换=================================
Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);%OFDM解码 即FFT变换
Rx_carriers=Y1(:,carriers);%除去IFFT/FFT变换添加的0,选出映射的子载波
Rx_phase =angle(Rx_carriers);%接收信号的相位
Rx_mag = abs(Rx_carriers);%接收信号的幅度
figure(7);
polar(Rx_phase, Rx_mag,'bd');%极坐标坐标下画出接收信号的星座图
%======================================================================
[M, N]=pol2cart(Rx_phase, Rx_mag);
Rx_complex_carrier_matrix = complex(M, N);
figure(8);
plot(Rx_complex_carrier_matrix,'*r');%XY坐标接收信号的星座图
axis([-4, 4, -4, 4]);
grid on
%====================16qam解调==================================================
Rx_serial_complex_symbols = reshape(Rx_complex_carrier_matrix',size(Rx_complex_carrier_matrix, 1)*size(Rx_complex_carrier_matrix,2),1)' ;
Rx_decoded_binary_symbols=demoduqam16(Rx_serial_complex_symbols);
%============================================================
baseband_in = Rx_decoded_binary_symbols;
figure(9);
subplot(2,1,1);
stem(baseband_out(1:100));
subplot(2,1,2);
stem(baseband_in(1:100));
%================误码率计算=============================================
bit_errors=find(baseband_in ~=baseband_out);
bit_error_count = size(bit_errors, 2)
ber=bit_error_count/baseband_out_length

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问如何通过labvie或者matlab将角域信号转换成时域信号
请问如何通过labvie或者matlab将角域信号转换成时域信号 之前下载了一个齿轮箱减速器故障数据,里面有匀速转动的信号,但希望把他转换成非匀速的,因为知道如何用阶次分析将时域信号变成角域,所以来个逆过程,但是想了一天也没想出来怎么搞,特意来求教大神
怎样将excel格式的肌电信号导入matlab gui绘制时域波形
本人大一医电本科,刚接触matlab,最近学习一个项目,要先用gui绘制信号的时域波形,但是信号是用excel格式的,采样频率为1000HZ的肌电信号,现在能将excel导入,但是绘制不了曲线。我按照网上搜集的音频绘制时域波形的代码修改了一下,但是运行时总是出错,有大神指点一下吗,希望能给点思路,初学者感激不尽。信号表格如图,有三个通道,现在写的代码选择的是第二个通道,本人改写的代码如下: % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [filename,pathname]=uigetfile('*xls','select the data File');%读取数据文件 if isequal(filename,0)|isequal(pathname,0) errordlg('没有选中文件','出错'); return; else file=[pathname,filename]; [y,Fs]=load(file);%读取文件表格 handles.Y=y; handles.FS=Fs; Ts=1/Fs;%采样周期 y=y(:,2);%选择第二通道信号 t=0:Ts:(length(y)-1)*Ts;%设置时域波形时间轴 x=y; N=2^15;%DFT点数 X=abs(fft(x,N));%傅里叶变换求幅度谱 axes(handles.axes1); plot(t,x); xlabel('Time/s'); ylim([-0.06 0.06]); guidata(hObject,handles) end ![图片说明](https://img-ask.csdn.net/upload/201805/23/1527059124_831573.png) ![图片说明](https://img-ask.csdn.net/upload/201805/23/1527059133_743990.jpg)
一个波形信号,由小波包变换从时域转换到到时频域,时频域的特征参数S1和S2是什么?怎么提取? matlab
一个波形信号,由小波包变换从时域转换到到时频域,时频域的特征参数S1和S2是什么?怎么提取? matlab
数字信号处理-时域离散随机信号处理
谁有数字信号处理-时域离散随机信号处理 丁玉美的课后题的上机作业答案? 尤其是第二章 维纳滤波和卡尔曼滤波课后的上机作业题编程答案? 如有发到我的QQ邮箱:1621297486@qq.com或者给我地址我自己下载! 非常感谢!
谁会这俩道自适应滤波的题啊,时域离散随机信号处理方面的,急急急,求大神
跪求大神啊!有关于数字信号处理中的时域离散随机信号处理的内容,真的很急!大神!大神!
为什么傅里叶变换可以将时域变为频域?
我在做关于语音信号处理的相关设计,都说傅里叶变换的作用在于将信号的时域波形转换为频域波形,可为什么傅里叶变换能实现这个作用呢?我做的是用MATLAB的。
matlab 音频信号频谱分析中的周期问题
1.问题 用MATLAB做了一个声音信号的时域和频域分析系统 当导入音频文件出来的波形是非周期信号 但是时域分析却能计算出周期频率 频域分析就会显示周期无限大 该怎么解决或者避免这个情况(时域分析周期计算用的是过零检测法) 2.下面是程序截图 ![图片说明](https://img-ask.csdn.net /upload/201906/20/1561030630_77631.png) ![图片说明](https://img-ask.csd n.net/upload/201906/20/1561030668_94516.png) 这两幅图是分析一段音频得出的结果,本来是非周期的,可是计算出了周期 3.代码 ``` Fs=str2double(get(findobj('Tag','sampfreq'),'String')); N=str2double(get(findobj('Tag','sampnum'),'String')); if handles.inputtype==0 msgbox('No wave exist! Please choose a input type!'); return; end n=1; ymax=max([handles.y(1) handles.y(2)]); ymin=min([handles.y(1) handles.y(2)]); from=str2double(get(handles.pointfrom,'String')); to=str2double(get(handles.pointto,'String')); global ti global amp global T if from<1 || to-from<5 msgbox('Error range!'); return; end for i=(from+2):(to-1) if handles.y(i-1)<0 && handles.y(i-2)<0 && handles.y(i)>=0 && handles.y(i+1)>0 if handles.y(i)==0 ti(n)=i; else ti(n)=i-handles.y(i)/(handles.y(i)-handles.y(i-1)); end amp(n)=(ymax-ymin)/2; ymax=0; ymin=0; n=n+1; else if ymax<handles.y(i) ymax=handles.y(i); end if ymin>handles.y(i) ymin=handles.y(i); end end end n=n-1; for i=1:n-1 T=ti(i+1)-ti(i); end ``` 请大神帮忙看一下,本人萌新,若有不清楚的或错误的地方,谢谢大佬指导!
信号处理问题 (用python或者matlab)
比如产生这样的正弦信号,做FFT变换。取得频谱上三个频率分量对应的下标,根据下标求出相应的频率值。 ``` t = np.arange(0,N-1)*T_interval sig = np.sin(200*np.pi*t)+np.sin(500*2*np.pi*t)+np.sin(700*2*np.pi*t) ``` 对于幅度就是用巴特沃斯滤波器,计算过滤出的信号时域上的峰值,求幅度。 ``` def calculate_amp(freq,sig,Fs,N): nyq=0.5*Fs j=0 signature=[None]*len(freq) peak=[None]*len(freq) for i in freq: #print i low=(i-10)/nyq high=(i+10)/nyq b,a=butter(3,[low,high],btype='band') #print b,a signature[j]=lfilter(b,a,sig) maximum=max(signature[j]) minimum=min(signature[j]) peak[j]=(abs(maximum)+abs(minimum))/2 j=j+1 return peak ``` 如果这个正弦信号,频率都为1,2,这些比较小的数值的话,结果都是正确的。但是如果 sig = 100*np.sin(200*np.pi*t)+20*np.sin(500*2*np.pi*t)+np.sin(700*2*np.pi*t) 幅度结果就会相差很大很大。 为什么呢
Matlab 幅频特性 试绘出连续时间信号   ‘
请大神帮忙看一下,为什么另一个图没有出来,绘制幅频特性,试绘出连续时间信号   f (t)  (t) 的时域波形 f ( t )及相应的幅频特性图。
用matlab中在一段音乐加高频噪声
帮我在一段低频音乐中加入高频噪音。要有加噪前后的音乐、时域波形和频域波形。
C语言编程实现FFT,帮帮忙吧
课题要求: 利用C实现FFT,本程序旨在训练基本编程能力。本设计需按照以下要求进行: (1)、 C语言编程产生时域离散信号; (2)、 编制基2时域抽取FFT算法、基2频域抽取FFT算法; (3)、 对离散信号进行FFT变换,进行频谱分析并和Matlab频谱分析对比;
复指数函数时域为门函数的理解
http://blog.csdn.net/deepdsp/article/details/6645994,其中说【exp(j*2*pi*k*n/N)在时域上幅度为一个门函数,对应的频谱为sinc函数,这是数字信号处理中一个基本的对应关系。】 exp(j*2*pi*k*n/N)为什么在时域上是个门函数呢?该函数的幅值不是恒等于1吗?
滚动时域优化是什么?如何通俗的解释?
英文似乎是 receding horizon control / model predictive control ? 滚动时域优化/滚动时域控制 在一些文献里遇到这个词,似乎是一种动态决策过程? 查了半天也没整明白是啥意思
利用MATLAB提取数据特征参数
各位大神们,小妹刚接触MATLAB,需要用对一组卫星数据做异变或者说是故障的特征参数提取,有几个问题困扰了很久。 1、由于数据间隔不一定,好几秒甚至几小时一个值,有三年的数据,我已经按1秒插值,然后又按100抽样,这样频率只有0.01,在频域都看不出什么东西,有什么办法能在频域上进行分析? 2、目前采用的是小波变换或者小波包变换,我想对经典的那几个时域特征参数(方差、裕度、波性因子等)做提取,当然如果能提取到频域的东西就更好了,因为有一个数据故障在时域就看的很清楚了,用小波进行奇异点检测感觉还不如直接看时域效果的好,所以但感觉提取不到什么东西,不知道是不是我的理解错误了还是方法不对,希望有大神指点一下。 3、还想到一个方法就是先对数据进行数值积分然后在进行数值微分,用原信号减去数值微分后的数据求残差,分析残差,离散 数据能直接使用diff()方法吗?部分程序语句如下: filename = 'D:\Data\igso data_zpp\IK8_100.TXT'; [y]=textread(filename,'%f','headerlines',1); zhijieweifen=diff(y); %微分 t=0:10:length(y); yy=y(1:10:length(y)); datasum=length(t); Z=zeros(1,datasum); Z(1,1)=0; for n=2:datasum; Z(1,n)=trapz(t(1,1:n),yy(1,1:n)); %进行数值积分 end yicijifen=Z/10; 4、直接用神经网络进行拟合好,还是积分后再拟合好呢? ![图片说明](https://img-ask.csdn.net/upload/201501/03/1420291326_749377.png) 本来想把txt数据也发上来,后来发现不能发数据,所以只能有一张图片了 图片中黄色曲线为有异常的点(时域图,横坐标为时间点) 因为毕设需要,时间比较紧,有懂的大神一定要帮我解答一下,也可以直接联系扣扣514879303,或者发到扣扣邮箱也行,十分感谢!
求问如何对时域散点图降噪
我们一共有500个样本,每个样本1024个样本点,然后我们每张图做了时域散点图,有高斯白噪声,如果单纯利用小波降噪,只能变成一条曲线不能成立,求问该用什么方法去降噪呢
java 傅里叶实现时域与频域的转换
解析音频文件,傅里叶实现时域转换成频域,小白,求解。。。。。。。。。。。。。。。。。。。。
ADS怎么直接显示波时域,频域波形啊?急急急!
本人刚开始做射频,刚开始使用ADS,ADS怎么直接显示波时域,频域波形啊?急急急!!!
基于matlab gui 的信道编码技术设计与仿真
我的毕设如题,主要是不知道有哪些常用的信道编码模型,在gui中的模型是什么样子,任务书中的要求是建立常见的几种信道编码技术演示模型,实现这几种信道编码技术演示内容的切换与演示,可以实时修改实验参数,能够实时观察每个节点上相关信号的时域或频域波形,达到动态演示和交互式性的目的。求大牛解答,拜托了 ,感谢!!!!
怎样对ADS-B信号进行IQ调制,自己尝试着写,发现最后的IQ样本不对?
clear all; clc; % load('E:\ADS-B Receiver-V1\TestData\ABC123.mat'); % load('E:\ADS-B Receiver-V1\TestData\Binary20_24_28.mat'); % Data_Block=round(rand(1,112)); AA = '780123'; Lon = 113.23; Lat = 35.15; Alt = 32500; [Data_Block_odd,Data_Block_even] = Data_Block_Generate(AA,Lon,Lat,Alt); %实现中频10MHz ASK调制 IFCarr_Fre=10e6; Sample_Fre=50e6; %时延 delay_odd=0;%us delay_even=0;%us SNR1=25; [sl1,ADSB_1090ES_Signal_odd1]=ADSB_1090ES_Generate(Data_Block_odd,IFCarr_Fre,Sample_Fre,delay_odd,SNR1); [sl2,ADSB_1090ES_Signal_even1]=ADSB_1090ES_Generate(Data_Block_even,IFCarr_Fre,Sample_Fre,delay_even,SNR1); slu = [sl1,zeros(1,300),sl2]; sl1n=sqrt(10.^(25/10)).*slu + randn(1,12300);%randn 正太分布的随机数 ADSB_1090ES_Signal = [ADSB_1090ES_Signal_odd1,ADSB_1090ES_Signal_even1]; t=0:1/Sample_Fre:1/Sample_Fre*(length(ADSB_1090ES_Signal)-1); %save ADSB_1090ES_Signal ADSB_1090ES_Signal1 ADSB_1090ES_Signal11 ADSB_1090ES_Signal2 ... % ADSB_1090ES_Signal21 ADSB_1090ES_Signal3 ADSB_1090ES_Signal31; %ADSB_1090ES_Data1 = downsample(ADSB_1090ES_Data,4); %ADSB_1090ES_Signal1 = downsample(ADSB_1090ES_Signal,4); %t1 = downsample(t,4); % %ADSB_1090ES_Signal_Hil = hilbert(ADSB_1090ES_Signal); %ADSB_1090ES_Signal_Hili = imag(ADSB_1090ES_Signal_Hil); %sum(ADSB_1090ES_Signal.*ADSB_1090ES_Signal_Hili) %fft_sig = fftshift(fft(ADSB_1090ES_Signal)); %fft_sigh = fftshift(fft(ADSB_1090ES_Signal_Hil)); %N=length(fft_sig); %f=linspace(-Sample_Fre/2,Sample_Fre/2 - Sample_Fre/N,N); %figure; %subplot(211); %plot(f,abs(fft_sig)); %subplot(212); %plot(f,abs(fft_sigh)); %figure; %plot(t.*1e6,20*log10(abs(ADSB_1090ES_Signal_Hil))); %grid on; %title('Hilbert变换后的信号波形');% % % ADSB_1090ES_Signal = downsample(abs(ADSB_1090ES_Signal_Hil),4); % % t1 = downsample(t,4); figure(1); plot(t.*1e6,ADSB_1090ES_Signal,'b'); grid on; % legend('中频信号波形','Hilbert变换后的信号波形'); title('时域波形');xlabel('t/us');ylabel('幅度'); %数字正交调制 % IF1_carrier=10e6; % IFCarr_dem = 2*Sample_Fre - IFCarr_Fre; cosCar_IF1=cos(2*pi*IFCarr_Fre*t); sinCar_IF1=sin(2*pi*IFCarr_Fre*t); %同相分量 ADSB_1090ES_RecI =ADSB_1090ES_Signal .*cosCar_IF1; %正交分量 ADSB_1090ES_RecQ =ADSB_1090ES_Signal .*sinCar_IF1; %构建低通滤波器,截止频率为2MHz %Lowpass=fir1(8,2e6/(Sample_Fre/2));%阶数目前是随意选的 % figure % %低通滤波器的频率响应 % freqz(Lowpass,1); %ADSB_1090ES_RecI_LP=filter(Lowpass,1,ADSB_1090ES_RecI);%同相分量 %ADSB_1090ES_RecQ_LP=filter(Lowpass,1,ADSB_1090ES_RecQ);%正交分量 %希尔伯特变换 ADSB_1090ES_Rec=ADSB_1090ES_RecI+1i*ADSB_1090ES_RecQ; % ADSB_1090ES_Rec=abs(ADSB_1090ES_Rec); % ADSB_1090ES_Rec=sqrt(ADSB_1090ES_Rec); % delay=(30+8)/2; % % the downsample for receive_signal % ADSB_1090ES_Rec_downsample=downsample(ADSB_1090ES_Rec,2); % % the delay adjust for filter % re_detection= ADSB_1090ES_Rec_downsample(delay+1:end-delay); %由于通过滤波器,产生了时延(线性相位) %figure %subplot(3,1,1); %plot(t.*1e6,abs(ADSB_1090ES_RecI_LP));grid on; %title('同相分量');xlabel('t/us');ylabel('幅度'); %subplot(3,1,2); %plot(t.*1e6,abs(ADSB_1090ES_RecQ_LP));grid on; %title('正交分量');xlabel('t/us');ylabel('幅度'); %subplot(3,1,3); %plot(t.*1e6,abs(ADSB_1090ES_Rec));grid on; %title('解调后信号');xlabel('t/us');ylabel('幅度'); %求调制信号的定积分 N = length(t)-1; dt = 1/Sample_Fre; integral_ADSB_1090ES_Rec(1)=0; for i=1:N integral_ADSB_1090ES_Rec(i+1)=integral_ADSB_1090ES_Rec(i)+ADSB_1090ES_Rec(i)*dt; end figure(2); plot(t,integral_ADSB_1090ES_Rec); title('IQ信号'); save ADSB_1090ES_Signal_odd1 有偿求教 加v guxinan520
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问