immse matlab,MATLAB程序:基于LS和MMSE算法的MSE比较

这篇MATLAB代码比较了在64子载波OFDM系统中,基于最小均方误差(MMSE)和最小二乘(LS)算法的信道估计算法的性能。通过计算MSE,展示了在不同信噪比(SNR)下,两种算法的误差表现。代码中包含了信道矩阵的生成、噪声的添加以及MSE的计算过程,并绘制了相应的性能曲线图。
摘要由CSDN通过智能技术生成

全部的文件内容如下,缺少子函数,不能成功运行的,需要的直接拿去吧

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%   Author:      Vinay Uday Prabhu

%   E-mail:      vinay_u_prabhu@yahoo.co.uk

%   Function:    Comparison of the performances of the LS and the MMSE channel estimators

%                for a 64 sub carrier OFDM system based on the parameter of Mean square error

%  Assumptions: The channel is assumed to be g(t)=delta(t-0.5 Ts)+delta(t-3.5 Ts)

%               {Fractionally spaced}

%For more information on the theory and formulae used , please do refer to the paper On

%"Channel Estimation In OFDM systems" By Jan-Jaap van de Beek, Ove Edfors, Magnus Sandell

% Sarah Kate wilson and Petr Ola Borjesson In proceedings

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于LSMMSE算法实现OFDM系统的信道估计的MATLAB代码: ```matlab % OFDM信道估计 % 基于LSMMSE算法 clc; clear all; close all; %% 定义系统参数 N = 64; % FFT大小 cp_len = 16; % 循环前缀长度 fs = 16000; % 采样率 Ts = 1/fs; % 采样时间 fc = 2000; % 载波频率 T = 1/fc; % 周期 fd = 100; % 多径延迟 K = 10; % 多径个数 SNR_dB = 30; % 信噪比 SNR = 10^(SNR_dB/10); % 信噪比(线性值) P = 1; % 发送功率 L = 10^4; % 发送数据长度 alpha = randn(1,K); % 多径衰落系数 tau = (0:K-1)*T; % 多径时延 h = zeros(1,N+K-1); % 多径信道冲激响应 %% 生成发送数据 x = randi([0,1],1,N*L); % 生成随机发送数据 X = reshape(x,N,L).'; % 分组 X_QPSK = 1/sqrt(2)*(2*X(:,1:2:end)-1+1i*(2*X(:,2:2:end)-1)); % QPSK调制 %% 信道模型 for k = 1:K h(k) = alpha(k)*exp(1i*2*pi*fc*tau(k)); % 多径信道冲激响应 end H = fft(h,N); % 多径信道频率响应 %% 发送和接收 y = zeros(L,N); % 接收信号 for l = 1:L % 发送信号加循环前缀 x_cp = [X_QPSK(l,N-cp_len+1:N),X_QPSK(l,:)]; % 通过多径信道 y_cp = conv(x_cp,h); % 加噪声 sigma2 = P/SNR/N; % 噪声方差 noise = sqrt(sigma2/2)*(randn(1,N+K-1)+1i*randn(1,N+K-1)); % 高斯白噪声 y_n = y_cp+noise; % 接收信号 % 去掉循环前缀并进行FFT y_fft = fft(y_n(K+1:N+K),N); y(l,:) = y_fft; end %% 信道估计 H_LS = zeros(L,N); % LS估计的多径信道频率响应 H_MMSE = zeros(L,N); % MMSE估计的多径信道频率响应 for l = 1:L % 发送信号加循环前缀 x_cp = [X_QPSK(l,N-cp_len+1:N),X_QPSK(l,:)]; % 通过多径信道 y_cp = conv(x_cp,h); % 加噪声 sigma2 = P/SNR/N; % 噪声方差 noise = sqrt(sigma2/2)*(randn(1,N+K-1)+1i*randn(1,N+K-1)); % 高斯白噪声 y_n = y_cp+noise; % 接收信号 % 去掉循环前缀并进行FFT y_fft = fft(y_n(K+1:N+K),N); % LS算法 H_LS(l,:) = y_fft./X_QPSK(l,:); % MMSE算法 H_MMSE(l,:) = conj(H)./(abs(H).^2+sigma2/P).*y_fft./X_QPSK(l,:); end %% 画图 % 信道频率响应 figure; subplot(2,1,1); plot((0:N-1)/N*fs/1000,20*log10(abs(H))); xlabel('频率/kHz'); ylabel('幅度/dB'); title('多径信道频率响应'); subplot(2,1,2); plot((0:N-1)/N*fs/1000,angle(H)/pi*180); xlabel('频率/kHz'); ylabel('相位/度'); title('多径信道频率响应'); % LS估计的信道频率响应 figure; subplot(2,1,1); plot((0:N-1)/N*fs/1000,20*log10(abs(H_LS))); xlabel('频率/kHz'); ylabel('幅度/dB'); title('LS估计的多径信道频率响应'); subplot(2,1,2); plot((0:N-1)/N*fs/1000,angle(H_LS)/pi*180); xlabel('频率/kHz'); ylabel('相位/度'); title('LS估计的多径信道频率响应'); % MMSE估计的信道频率响应 figure; subplot(2,1,1); plot((0:N-1)/N*fs/1000,20*log10(abs(H_MMSE))); xlabel('频率/kHz'); ylabel('幅度/dB'); title('MMSE估计的多径信道频率响应'); subplot(2,1,2); plot((0:N-1)/N*fs/1000,angle(H_MMSE)/pi*180); xlabel('频率/kHz'); ylabel('相位/度'); title('MMSE估计的多径信道频率响应'); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值