c = 3e8; % propagation speedfc = 60e9; % carrier frequency lambda = c/fc; rng(6466); txcenter = [0;0;0]; rxcenter = [1500;500;0]; rxcenter_2 = [1500;-500;0]; [~,txang] = rangeangle(rxcenter,txcenter); [~,rxang] = rangeangle(txcenter,rxcenter); [~,rxang_2] = rangeangle(txcenter,rxcenter_2); rxsipos = [0;0;0]; rxsopos = [0;0;0]; g = 1; % gain for the path Nsamp = 1e6; % 定义期望信号和预编码矩阵 u = [1; 2; 3]; W = randn(3, 3); % 定义传输信号 s = [2; 4; 6]; % 生成人工噪声 z = randn(3, 1); % 合成发送信号 x = u'*s + W*z; ebn0_param = -10:2:10; Nsnr = numel(ebn0_param); rxarray_2 = phased.ULA('NumElements',4,'ElementSpacing',lambda/2); rxmipos_2 = getElementPosition(rxarray_2)/lambda; misochan_2 = scatteringchanmtx(txcenter,rxmipos_2,txang,rxang_2,g); wt_2 = txarraystv(fc,txang)'; y_2 = misochan_2.*x; y = misochan*x'; ber_miso = zeros(Nsnr,2); for k = 1:Nsnr snr = ebn0_param(k) + 10*log10(numel(wt_2)); rxsignal = awgn(y,snr,'measured'); rxsignal_2 = awgn(y_2,snr,'measured'); ber_miso(k,:) = [helperMIMOBER(misochan,rxsignal,snr,wt_2,1),... helperMIMOBER(misochan_2,rxsignal_2,snr,wt_2,1)]; end helperBERPlot(ebn0_param,ber_miso(:)); legend('MISO','Eavesdropper');这个代码哪里错了,为什么运行不出来,应该怎么改正
时间: 2024-02-27 07:58:54 浏览: 139
http://hi.csdn.net/invite.php?u=325297&c=1ace3e55fd7f56be
根据您提供的代码,可能有以下错误:
1. `scatteringchanmtx` 函数未定义。请确保您已经定义了该函数并且它在当前的工作路径中。
2. `txarraystv` 函数未定义。请确保您已经定义了该函数并且它在当前的工作路径中。
3. `helperMIMOBER` 函数未定义。请确保您已经定义了该函数并且它在当前的工作路径中。
4. `helperBERPlot` 函数未定义。请确保您已经定义了该函数并且它在当前的工作路径中。
请检查您的代码中是否存在这些问题,并且确保它们都被定义并且在当前的工作路径中。
另外,请注意 `y` 和 `y_2` 的维度不同。在第26行中,`y` 被定义为 `y = misochan*x';`,是一个行向量。而在第30行中,`rxsignal` 被定义为 `rxsignal = awgn(y,snr,'measured');`,它应该是一个列向量。因此,您需要根据 `y` 的维度,将 `y_2` 转换为相应的维度,如下所示:
```
y_2 = misochan_2*x;
```
这将会生成一个列向量,与 `rxsignal` 的维度相匹配。
阅读全文