|
楼主 |
发表于 2024-1-16 09:52:42
|
显示全部楼层
另外,我把他的Matlab程序放在这里,不知道这程序能不能运行啊。
产生图3的程序:
function[]=amdist(Aa,Afi,Ra,Rfi)
%这是用来研究调幅同步广播的失真的。m是调幅系数;
m=0.98; Aa=1; Afi=pi; Ra=1; Rfi=3*pi/4;
%音频的相位差Afi
%高频载波的相位差Rfi
%两个高频信号之比Ra;
W=2; %音频的角频率
t=0:.1:6.28;
a=sqrt((1+m*cos(W*t)+Ra*(1+m*cos(W*t+Afi)*cos(Rfi))).^2+...
(Ra*(1+m*cos(W*t+Afi)*sin(Rfi))).^2);
a1=1.6+cos(W*t); %这是原信号
plot(t,a, t,a1), hold on
-------------------------------------------------
产生图8的程序,注意要和下一个函数adl_1一起使用:
Ra=1; Aa=1;
for i=-20:20;
Afi=i*pi/10;
for j=-20:20;
Rfi=j*pi/10;
d(i+21,j+21)=adl_1(Ra,Rfi,Aa,Afi);
end;
end;
k=1:41; l=1:41;
mesh(k,l,d); grid on;
xlabel('载波相位差');
ylabel('音频相位差');
zlabel('失真');
-----------------------------------------------------
function[d]=adl_1(Ra,Rfi,Aa,Afi)
t=0:1/1024:1-1/1024;
u1=(1+sin(10*pi*t)).*sin(100*pi*t);
u2=Ra*(1+sin(10*pi*t+Afi)).*sin(100*pi*t+Rfi);
u=abs(u1+u2);
[n,Wn]=buttord(20/512, 200/512, 3, 60 ); % 设计低通滤波器
[b, a]=butter(n, Wn);
y5=filter(b, a, u); % 对检波后的信号滤波
a1=fft(y5);
a2=abs(a1);
b1=a2(11);
b2=a2(16);
b3=a2(21);
d=sqrt(b2^2+b3^2)/sqrt(b1^2+b2^2+b3^2);
--------------------------------------------------
产生图6的程序:它要和后面两个函数一起使用。
-----------------------------------
%ada3.m
clf reset
Aa=0; Afi=0; Ra=0; Rfi=0;
H=axes('unit','normalized','position',[0,0,1,1],'visible','off');
%set(gcf,'currentaxes',H);
set(gcf,'name','调幅波的失真');
%str='\fontname{隶书}两个AM信号叠加后的失真';
%text(0.12,0.93,str,'fontsize',13);
h_fig=get(H,'parent');
set(h_fig,'unit','normalized','position',[0.1,0.2,0.7,0.4]);
%h_axes=axes('parent',h_fig,...
% 'unit','normalized','position',[0.1,0.15,0.55,0.7],...
% 'xlim',[0 15],'ylim',[0 1.8],'fontsize',8);
h_text1=uicontrol(h_fig,'style','text',...
'unit','normalized','position',[0.84,0.83,0.15,0.06],...
'horizontal','left','string',{'输入高频幅度比='},'fontsize',12);
h_edit1=uicontrol(h_fig,'style','edit',...
'unit','normalized','position',[0.84,0.73,0.15,0.1],...
'horizontal','left',...
'callback',[...
'Ra=str2num(get(gcbo,''string''));',]);
h_text2=uicontrol(h_fig,'style','text',...
'unit','normalized','position',[0.84,0.63,0.15,0.06],...
'horizontal','left','string',{'输入高频相位差='},'fontsize',12);
h_edit2=uicontrol(h_fig,'style','edit',...
'unit','normalized','position',[0.84,0.53,0.15,0.1],...
'horizontal','left',...
'callback',['Rfi=str2num(get(gcbo,''string''));',]);
h_text3=uicontrol(h_fig,'style','text',...
'unit','normalized','position',[0.84,0.43,0.15,0.06],...
'horizontal','left','string',{'输入音频幅度比='},'fontsize',12);
h_edit3=uicontrol(h_fig,'style','edit',...
'unit','normalized','position',[0.84,0.33,0.15,0.1],...
'horizontal','left',...
'callback',[...
'Aa=str2num(get(gcbo,''string''));',...
]);
h_text4=uicontrol(h_fig,'style','text',...
'unit','normalized','position',[0.84,0.23,0.15,0.06],...
'horizontal','left','string',{'输入音频相位差='},'fontsize',12);
h_edit4=uicontrol(h_fig,'style','edit',...
'unit','normalized','position',[0.84,0.13,0.15,0.1],...
'horizontal','left',...
'callback',[...
'Afi=str2num(get(gcbo,''string''));',...
]);
h_push1=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.84,0.03,0.075,0.1],...
'string','start1',...
'callback','adl(Ra,Rfi,Aa,Afi)'...
);
h_push2=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.92,0.03,0.075,0.1],...
'string','start2',...
'callback','adl2(Ra,Rfi,Aa,Afi)'...
);
----------------------------------------------
function[]=adl(Ra,Rfi,Aa,Afi)
t=0:1/1024:1-1/1024;
n=5;
u1=(1+sin(n*2*pi*t)).*sin(20*n*pi*t);
u2=Ra*(1+sin(n*2*pi*t+Afi)).*sin(20*n*pi*t+Rfi);
u3=u1+u2;
subplot('Position',[0.05,0.65,0.35,0.35]) ;
plot(u3);
u=abs(u3);
subplot('Position',[0.05,0.15,0.35,0.35]) ;
plot(u); xlabel('检波后的波形') % 整流后的波形
[n,Wn]=buttord(40/512, 200/512,3, 80 ); % 设计低通滤波器
[b, a]=butter(n, Wn); %it is Wn here,not "2*pi*Wn"
y5=filter(b, a, u); % 对检波后的信号滤波
%subplot(3, 1, 2),
subplot('Position',[0.45,0.65,0.35,0.35]);
plot(t, y5); xlabel('滤波后的波形')
a=fft(u);
subplot('Position',[0.45,0.15,0.35,0.35]);
stem(abs(a)); xlabel('音频的频谱')
axis([0,40,0,300]);
--------------------------------------------------------------
function[]=adl2(Ra,Rfi,Aa,Afi)
t=0:1/1024:1-1/1024;
n=5;
u1=(1+sin(n*2*pi*t)).*sin(20*n*pi*t);
u2=Ra*(1+sin(n*2*pi*t+Afi)).*sin(20*n*pi*t+Rfi);
u3=u1+u2;
subplot('Position',[0.05,0.7,0.35,0.27]) ;
plot(u1);
u=abs(u3); ylabel('u1')
subplot('Position',[0.05,0.38,0.35,0.27]) ;
plot(u2); ylabel('u2')
subplot('Position',[0.05,0.05,0.35,0.27]) ;
plot(u3); ylabel('u1+u2')
[n,Wn]=buttord(40/512, 200/512,3, 80 ); % 设计低通滤波器
[b, a]=butter(n, Wn); %it is Wn here,not "2*pi*Wn"
y5=filter(b, a, u); % 对检波后的信号滤波
%subplot(3, 1, 2),
subplot('Position',[0.45,0.65,0.35,0.35]);
plot(t, y5); xlabel('检波并滤波后的波形') % 画出滤波后的音频
a=fft(u);
subplot('Position',[0.45,0.15,0.35,0.35]);
stem(abs(a)); xlabel('音频频谱')
axis([0,40,0,300]);
|
|