matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……function y=pipei(x)%构造发送信号波形t1=0:100;s01=-2+0*t1;s11=2+0*t1;t2=100:200;s02=2+0*t2;s12=-2+0*t2;t3=200:1
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 04:50:16
![matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……function y=pipei(x)%构造发送信号波形t1=0:100;s01=-2+0*t1;s11=2+0*t1;t2=100:200;s02=2+0*t2;s12=-2+0*t2;t3=200:1](/uploads/image/z/9655675-43-5.jpg?t=matlab%E7%A8%8B%E5%BA%8F%E6%B1%82%E8%A7%A3%E9%87%8A%E2%80%A6%E2%80%A6%E8%B6%8A%E8%AF%A6%E7%BB%86%E8%B6%8A%E5%A5%BD%E2%80%A6%E2%80%A6%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8B%E2%80%A6%E2%80%A6%E8%8B%A5%E8%A7%A3%E9%87%8A%E7%9A%84%E4%BB%A4%E4%BA%BA%E6%BB%A1%E6%84%8F%2C%E5%88%86%E5%A4%A7%E5%A4%A7%E5%9C%B0%E6%9C%89%E8%B5%8F%E2%80%A6%E2%80%A6%E5%85%88%E4%B8%8A20%E5%88%86%E2%80%A6%E2%80%A6function+y%3Dpipei%28x%29%25%E6%9E%84%E9%80%A0%E5%8F%91%E9%80%81%E4%BF%A1%E5%8F%B7%E6%B3%A2%E5%BD%A2t1%3D0%3A100%3Bs01%3D-2%2B0%2At1%3Bs11%3D2%2B0%2At1%3Bt2%3D100%3A200%3Bs02%3D2%2B0%2At2%3Bs12%3D-2%2B0%2At2%3Bt3%3D200%3A1)
matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……function y=pipei(x)%构造发送信号波形t1=0:100;s01=-2+0*t1;s11=2+0*t1;t2=100:200;s02=2+0*t2;s12=-2+0*t2;t3=200:1
matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……
function y=pipei(x)
%构造发送信号波形
t1=0:100;
s01=-2+0*t1;s11=2+0*t1;
t2=100:200;
s02=2+0*t2;s12=-2+0*t2;
t3=200:1:400;
s03=0*t3;s13=0*t3;
t=[t1,t2,t3];
s0=[s01,s02,s03];
s1=[s11,s12,s13];
%匹配滤波器系统函数
h0=s1;
h1=s0;
%码元周期
Tb=200;
for i=1:length(x)
if(x(i)==1)
for j=1:Tb
d((i-1)* Tb+j)=1;
end
else
for j=1:Tb
d((i-1)* Tb+j)=0;
end
end;
end;
%对发送二进制信号进行波形映射
k=1;
for g=1:length(x)
if(x(g)==1)
y=s1;
else
y=s0;
end;
%叠加高斯白噪声,信噪比设为10dB
ynr=awgn(y,10,'measured');
%产生输出信号
r0=ifft(fft(ynr,512).*fft(h0,512),512);
r1=ifft(fft(ynr,512).*fft(h1,512),512);
tt=0:511;
figure(k);
subplot(211);
plot(t,y,'k',t,ynr,'g');
axis([0,400,-3,3]);
legend('发送波形','叠加高斯白噪声后波形');
subplot(212);
plot(tt,r0,'b',tt,r1,'r');
axis([0,400,-900,900]);
gtext('\leftarrow r0=conv(y,h0)');
gtext('\leftarrow r1=conv(y,h1)');
if r0(Tb)>r1(Tb)
m(k)=0;
else m(k)=1;
end;
k=k+1;
end;
for i=1:length(m)
if(m(i)==1)
for j=1:Tb
n((i-1)* Tb+j)=1;
end
else
for j=1:Tb
n((i-1)* Tb+j)=0;
end
end;
end;
figure(k);
subplot(211);
plot(d);
axis([0,length(d),-0.2,1.2]);
title('发送的二进制信号');
subplot(212);
plot(n);
axis([0,length(n),-0.2,1.2]);
title('接收判定后的二进制信号');
本人对matlab不太感冒,我专业走的也不是这个方向,我走的是单片机方向,并且matlab我们也没有学过……程序里面有些还是能稍微看的懂的……请大体的解释下程序,能解释多少算多少吧…… 能补全更好啊~
matlab程序求解释……越详细越好……程序如下……若解释的令人满意,分大大地有赏……先上20分……function y=pipei(x)%构造发送信号波形t1=0:100;s01=-2+0*t1;s11=2+0*t1;t2=100:200;s02=2+0*t2;s12=-2+0*t2;t3=200:1
function y=pipei(x)
%构造发送信号波形
t1=0:100;--自变量,间隔为1,等价于t1=0:1:100
s01=-2+0*t1;s11=2+0*t1;--实际上产生了t1上的两个常量信号 -2和2
t2=100:200;--第二个区间段
s02=2+0*t2;s12=-2+0*t2;--第二个区间t2上的两个常量信号
t3=200:1:400;
s03=0*t3;s13=0*t3;--第三个区间t3上的两个零信号
t=[t1,t2,t3];--下面这三行将自变量区间和函数空间合并.
s0=[s01,s02,s03];
s1=[s11,s12,s13];
%匹配滤波器系统函数
h0=s1;
h1=s0;
%码元周期
Tb=200;
for i=1:length(x)--x是函数的传入参数即pipei(x)中的x,length求其长度
if(x(i)==1)
for j=1:Tb
d((i-1)* Tb+j)=1;--如果x的第i个元素为1,执行此循环
--此时每个x元素对应产生一个Tb(200)长的1序列
end
else
for j=1:Tb
d((i-1)* Tb+j)=0;
--否则产生一个Tb(200)长的零序列
end
end;
end;
--这个循环结束后,d就是一个200*length(x)长度的数列,每一个x元素对应d中200个值,1对应1,其它数对应0.
%对发送二进制信号进行波形映射
--后面的太长,具体功能我就不解释了,而且我对编码也不大懂,只给出函数代码表面的含义
k=1;
for g=1:length(x)--for循环
if(x(g)==1)
y=s1;
else
y=s0;
end;
%叠加高斯白噪声,信噪比设为10dB
ynr=awgn(y,10,'measured');--产生高斯噪声
%产生输出信号
r0=ifft(fft(ynr,512).*fft(h0,512),512);--两个信号分别fft之后相乘,对乘积再进行ifft(逆傅里叶变换),时域上看就是卷积.512指进行fft或ifft的点数.
r1=ifft(fft(ynr,512).*fft(h1,512),512); --同上
tt=0:511;
figure(k);--绘图
subplot(211);--将一个图像分成上下两块,这里绘制第一块
plot(t,y,'k',t,ynr,'g');--绘制两条曲线,一个是黑色black,一个是绿色green
axis([0,400,-3,3]);--设置坐标系的范围:x是从0到400,y轴从-3到3
legend('发送波形','叠加高斯白噪声后波形');--给两条曲线添加标记
subplot(212);--绘制第二块
plot(tt,r0,'b',tt,r1,'r');--一条是蓝色blue,一条是红色red
axis([0,400,-900,900]);--设置坐标轴范围
gtext('\leftarrow r0=conv(y,h0)');--在图像上给出文本标记
gtext('\leftarrow r1=conv(y,h1)');
if r0(Tb)>r1(Tb)
m(k)=0;
else m(k)=1;
end;
k=k+1;
end;
for i=1:length(m)--跟上面的大同小异
if(m(i)==1)
for j=1:Tb
n((i-1)* Tb+j)=1;
end
else
for j=1:Tb
n((i-1)* Tb+j)=0;
end
end;
end;
figure(k);--绘图,与上面的大同小异.
subplot(211);
plot(d);
axis([0,length(d),-0.2,1.2]);
title('发送的二进制信号');
subplot(212);
plot(n);
axis([0,length(n),-0.2,1.2]);
title('接收判定后的二进制信号');