close all;%关闭当前打开的matlab窗口,如画图窗口等
clear all;%清理workspace空间的所有变量
clc;%清空commond
N_loop=100;
EbN0=0:5:25;
N0=1;
Eb=10^(EbN0/10)N0;%^表示矩阵对应元素的幂
normalized=sqrt(1/2);%求平方根
C_norm=zeros(1,length(EbN0));%生成1行,6列(EbN0的的长度)的全零阵。
D=zeros(1,N_loop);%生成1行N_loop列的全零矩阵
n=[1,2,4,8];
W=310^4; %三乘以十的四次幂
for i=1:4
for ee=1:length(EbN0)
for s=1:N_loop
H=randn(n(i),n(i))+jrandn(n(i),n(i));%randn(m,n)是随机生成服从正态分布的m行n列的矩阵
Q=H'H;%H的转置和H做矩阵乘法
m=n(i);
I=eye(m,m);%生成m行m列的单位矩阵
SNR=Eb(ee)/N0;
C=Wlog2(det(I+SNR/n(i)Q));%det(H)是求矩阵H的行列式的值
D(s)=C;%D中的第S个元素赋值为C
end
C_avg=sum(D)/N_loop;%求D的和再除以N_loop就是平均值。其实可以直接用C_avg=mean(D)的。
C_normal=C_avg/W;
C_norm(ee)=C_normal;
disp(['When SNR is ',num2str(EbN0(ee)),'dB: C_avg',int2str(i),' = ',num2str(C_avg),'; C_normal ',int2str(i),' = ',num2str(C_normal)]);%disp()是显示
end
P=plot(EbN0,C_norm,'r-d');%画图。'r-d‘表示画红色的直线菱形小图标的意思
set(P,'linewidth',[2]);%把画的图的线宽设为2像素
axis([0 30 0 100]);%设定图的范围0<x<30,0<y<100;
AX=gca;%没有提到过gca估计你抄错了
set(AX,'fontsize',14);%把AX的字体设为14号
title('\fontsize{12}\bfMIMO ÐŵÀÈÝÁ¿');%给图的标题。估计中文乱码问题。自己改下就好
X=xlabel('Eb/N_0 [dB]£¨ÐÅÔë±È£©');%设置标签名,同样乱码。
set(X,'fontsize',12);
Y=ylabel('Capacity bit/s/Hz£¨ÐŵÀÈÝÁ¿£©');
set(Y,'fontsize',12);
hold on;%图不要清理掉,再有plot不会清理已经有的图。
grid on;%加网格线
end
legend('n1=1','n2=2','n3=4','n4=8');%设置图例,一般默认在右上角
希望能帮到你!
你是不是在编辑器里面直接运行的?
这是一个函数,需要提供输入参数才可以。
看代码内容,和百度知道的一个问题“用matlab进行BPSK调制和解调的仿真”有点接近,不过,更像是pudn中mimo_ofdmrar的函数(但guiyi那一行的具体数据不同)。
如果你下载的是有多个文件的工具包,请尝试运行其它文件,例如vblast_QPSK、vblast_Cor之类的,这些文件中都调用了本函数。
matlab自带了一个百mimo信道的模块,在block
simulink里,这度个简短不了;
部分参考如下:
SNR=0;
%定义信噪知比为0HZ
A=10^(SNR/10);
%信噪比的道单位转换关系式
Im=eye(1);
%这里回的"1"为发射天线和接收天线两者数目少答的根数
sum=0;
以上就是关于Matlab程序注译全部的内容,包括:Matlab程序注译、matlab程序运行报错Not enough input arguments.、如何使用matlab仿真信道容量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)