对,如何修改呢,报错显示无法识别Sam1
时间: 2024-01-09 09:04:08 浏览: 39
根据代码的提示,可能是 `Sam1` 变量名未定义导致的错误。你需要检查一下代码中是否有定义 `Sam1` 变量的语句。另外,你的代码中有一些语法错误,我进行了一些修改,你可以参考一下:
```matlab
fs = 1000;
fc = 50;
f_stop = 200;
dt = 1/fs;
t = 0 : dt : 10-dt;
df = fs/length(t);
f = -fs/2 : df : fs/2-df;
s0 = ones(1,40);
rand('seed',1234);
msg = randi([0,1],100,1);
msg1 = msg*ones(1, fs/10);
msg2 = reshape(msg1',1, length(t));
sam = (msg2).*cos(2*pi*fc*t);
r1 = awgn(sam, 15, 'measured');
y = r1.* cos(2*pi*fc*t);
Y = fftshift(fft(y))/fs;
n_stop = round(f_stop/df);
Hlow = zeros(size(f));
Hlow(abs(f)<=n_stop) = 1;
DEM = Y.*Hlow;
dem = ifft(ifftshift(DEM))*fs;
y1 = reshape(dem,40,100);
r00 = s0*y1;
j = find(r00>20);
decmsg = zeros(1,100);
decmsg(j) = 1;
decmsg = decmsg.';
decmsg1 = decmsg*ones(1,fs/10);
decmsg2 = reshape(decmsg1',1, length(t));
subplot(5,1,1);
plot(t,msg2);
title('原信号');
axis([0 10 0 1.5]);
subplot(5,1,2);
plot(t,sam);
title('已调信号');
axis([0 10 -1.5 1.5]);
subplot(5,1,3);
plot(t,r1);
title('已调信号awgn');
axis([0 10 -1.5 1.5]);
subplot(5,1,4);
plot(t,dem);
title('解调信号');
axis([0 10 0 1.5]);
subplot(5,1,5);
plot(t,decmsg2);
title('判决信号');
axis([0 10 0 1.5]);
```
这样,你的代码应该就可以正常运行了。这段代码的功能是:随机生成一个二进制消息,进行二进制振幅移移键控(BASK)调制,添加高斯白噪声,然后进行相干解调,最后进行二进制判决。