幅度调制的包络检波解调(求MATLAB代码

幅度调制的包络检波解调(求MATLAB代码,第1张

用希尔伯特变换可以实现包络检波!

clear all; close all;

t=0:200;

x1=sin(8pit/100)+1;

subplot(411);plot(t,x1);title('信号');

x2=4sin(40pit/100);

subplot(412);plot(t,x2);title('载波');

x3=(1+x1)x2;

subplot(413);plot(t,x3);title('调幅信号');

x4=abs(hilbert(x3));

subplot(414);plot(t,x4);title('解调信号');

改了点东西,你看你是不是这个意思?

clear all;

clc;

%初始数据

sensor_number=5; %阵元数

N_x=1024; %快拍数

f=810^9; %信号频率

l=310^8/f; %波长

d=05l; %阵元间距

snr=20;

snr1=10^(snr/20); %信噪比

theta=[0 20 40]; %信号角度

rtheta=thetapi/180;

ll=length(theta);

%生成信号

for m=1:sensor_number;

for n=1:ll;

A(m,n)=exp(-1i2pi(m-1)dsin(rtheta(n))/l);

end

end

%解析信号虚部是实部的希尔伯特变换,采用复信号的表示方法,模拟入射信号

for m=1:ll;

for n=1:N_x;

p1=rand(1,1);

p2=rand(1,1);

sr(m,n)=sqrt(-2snr1snr1log(p1))cos(2pip2);

si(m,n)=sqrt(-2snr1snr1log(p1))sin(2pip2);

s(m,n)=sr(m,n)+1isi(m,n);

end

end

%高斯白噪声

for m=1:sensor_number;

for n=1:N_x;

p3=rand(1,1);

p4=rand(1,1);

wr(m,n)=sqrt(-2log(p3))cos(2pip4);

wi(m,n)=sqrt(-2log(p3))sin(2pip4);

w(m,n)=wr(m,n)+1iwi(m,n);

end

end

x=As+w;

%构造协方差矩阵,特征分解

C2=xx'/N_x;

M=m;

C33=zeros(M,M);

%for j=1:M

%for i=1:M-j+1

%C33(i,i+j-1)=C2(1,j);

% end

%end

%for j=2:M

%for i=1:M-j+1

%C33(i+j-1,i)=conj(C2(1,j));

%end

%end

C3=zeros(M,M);

for i=1:M

C3(i,i)=C2(1,1);

end

for i=1:M-1

C3(i,i+1)=C2(1,2);

end

for i=1:M-1

C3(i+1,i)=conj(C2(1,2));

end

for i=1:M-2

C3(i,i+2)=C2(1,3);

end

for i=1:M-2

C3(i+2,i)=conj(C2(1,3));

end

for i=1:M-3

C3(i,i+3)=C2(1,4);

end

for i=1:M-3

C3(i+3,i)=conj(C2(1,4));

end

for i=1:M-4

C3(i,i+4)=C2(1,5);

end

for i=1:M-4

C3(i+4,i)=conj(C2(1,5));

end

[V D]=eig(C3);

[lambda index]=sort(diag(D),'descend');

lambda=lambda';

%AIC准则判断信源数

for k=0:sensor_number-1

temp0=sum(lambda(k+1:sensor_number))/(sensor_number-k);

temp1=prod(lambda(k+1:sensor_number))^(1/(sensor_number-k));

Lambda=temp0/temp1;

AIC(k+1)=2N_x(sensor_number-k)log(Lambda)+2k(2sensor_number-k);

end

[aic_min b]=min(AIC);

num=b-1;%估计出的信源数

disp('source_number=');

disp(num);

%噪声子空间

Un=V(:,index(num+1:sensor_number));

Gn=UnUn';

%谱峰搜索

searching_doa=-90:01:90;

for i=1:length(searching_doa)

a_theta=exp(-1i(0:sensor_number-1)'2pidsin(pisearching_doa(i)/180)/l);

Pmusic(i)=1/abs((a_theta)'Gna_theta);

end

plot(searching_doa,10log10(Pmusic),'r');

xlabel('入射角/degree');

ylabel('空间谱/dB');

legend('Music Spectrum');

title('经典MUSIC估计');

grid on;

(1) 计算序列x(n)的Hilbert变换^x(n),并比较两序列频谱的变化。

(2) 验证x(n)与^x(n)是正交的。

(3) 余弦序列的Hilbert变换是正弦序列,则序列的Hilbert变换为^x(n)=sin(02pin),试比较扩展函数yhilbertm与函数hilbertm对序列x(n)进行Hilbert变换的结果。

fs=2000; Ndata=4000; N=5000; n=0:Ndata-1; t=n/fs; Ak=rand(1+Ak(3)sin(2pi48t+fik(3))+Ak(4)sin(2pi64t+fik(4)

t不是一个向量,大哥,t=1000e-6; c1=cos(2pifct);c1就是一个数值了,后面的 c1(1:N) 是啥意思?

当然会说矩阵不平衡了

应该改成:u1=y(1:N)c1+imag(hilbert(y(1:N)))c2;

如果你要表达的是向量点乘,那就要把t先linspace一下

t1=linspace(0,t,N)

然后: c1=cos(2pifct1);

c2也一样

然后就可以了

以上就是关于幅度调制的包络检波解调(求MATLAB代码全部的内容,包括:幅度调制的包络检波解调(求MATLAB代码、matlab 循环程序的问题、matlab中利用hilbert变换计算相位时会产生跳变 怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9450599.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存