normc matlab,MATLAB 7.0 MIMO信道信号检测SQRD算法检测性能奇差,算法可能...

本帖最后由 angelinaaa 于 2013-4-26 23:20 编辑

%蓝色为问题集中区,其他应该问题不大

clc;

clear;

% 论文仿真原型程序,仿真(SQRD) Vblast接收的检测性能,绘制误比特率~信噪比曲线。

% 发端初始化===============================================================

% 发射天线数tx,接收天线数rx,发射矩阵长度L(帧长)

tx=4;rx=4;L=1;

Modulation='BPSK';

% EbN0=0;

EbN0=[0:5:20];

B=30000;Ts=1/24300;

% 建立EbN0与SNR之间的换算关系

SNR=EbN0-10*log10(Ts*B);

% 信源A

A=randint(tx*L,1);

% 经过BPSK调制的V-Blast发射矩阵X

X=zeros(tx,L);

for k=1:tx

X(k,:)=(-1).^(A(k:tx:end)+1);

end

% 信道传输=================================================================

% 快衰落Rayleigh信道H

H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));

% 均值为0方差为1的高斯白噪声n

n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));

% 未叠加噪声的接收信号R

R=zeros(rx,L);

for k=1:L

R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);

end

% SQRD=======================================================

disp('SQRD')

bersqr=[];

for m=SNR

m                       %调试,显示每步m结果

snr=10^(m/10);

R_noised=R+sqrt(1/snr)*n;

x=[];

c=[];

a=zeros(tx*L,1);     %随机生成估计值列向量

for t=1:L

r=R_noised(:,t);   %R接收矩阵去一维

HH=H(:,:,t);

xtemp=zeros(tx,1);     %设对应硬判断估计值矩阵

R1=zeros(tx,tx);            %各矩阵赋初值

Q=HH

P=eye(tx)

for j=1:tx   %SQRD 法排序重置过程

Qnorm=[];

for i=j:tx

Qnorm=[Qnorm,norm(Q(:,i))]

end

[qt tt]=min(Qnorm)

%               [wt,tt,qt]=minnormc(Q,S)

%               %调用求取最小列范数函数,并保留相应变量:最小范数对应列向量、最小范数对应列序号、列最小范数值

[P]=swap(P,tt+j-1,j);          %关键矩阵对应换序

[Q]=swap(Q,tt+j-1,j);

[R1]=swap(R1,tt+j-1,j);

%                R1(j,j)=norm(Q(:,j));

R1(j,j)=qt;                  %R对角线上元素赋值

Q(:,j)=Q(:,j)/R1(j,j);               %Q列向量归一化重置值

for k=(j+1):tx

R1(j,k)=Q(:,j)'*Q(:,k);         %R对角线上方其他元素赋值

Q(:,k)=Q(:,k)-R1(j,k)*Q(:,j);

end

end                               %经典QR分解部分

y=Q'*r;                 %QR分解

u=zeros(tx,1);

for k=tx:-1:1

k

d=0;

for i=1:tx

if ((k+i)<=tx)            %R1斜上对角线元素计算

d=d+R1(k,k+i)*sqrt(1/tx)*u(k+i);

end

end

u(k)=(y(k)-d)/R1(k,k)

end

xtemp=(u>=0)-(u<0)+0   %硬判决

x=[x,xtemp];

end

c=P*x            %排列替换x到c

for k=1:tx

a(k:tx:end)=(c(k:tx:end)+1)/2

end

[errbit,temp_ber]=biterr(A,a)

bersqr=[bersqr,temp_ber]

end

semilogy(EbN0,bersqr,'p- b'),grid on

legend('SQRD');

xlabel('EbN0(dB)');

ylabel('误比特率');

title('blast检测比较')

===============================================================

function [G]=swap(G,xx,z)

T=[];

T(:,1)=G(:,xx);

G(:,xx)=G(:,z);

G(:,z)=T(:,1);

运行后性能非常差,应该是10的-3左右的误码率,但查不出错误,比设计急用,希望大家能帮帮那个忙!谢谢了!!!

sqrt.png

(10.47 KB, 下载次数: 0)

2013-4-26 23:13 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

6111d48d82ed430c00e279dc56862d81.png

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2013-4-26 23:15 上传

点击文件名下载附件

3.28 KB, 下载次数: 33

SQRD算法

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2013-4-26 23:15 上传

点击文件名下载附件

84 Bytes, 下载次数: 26

交换函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值