• 基于智能反射面的MIMO系统波束赋形算法代码


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 kellermanx798 2024-03-29 09:54 采纳率: 0% 浏览 10 首页/ 数据结构与算法 / 基于智能反射面的MIMO系统波束赋形算法代码 算法 基于智能反射面的MIMO系统波束赋形算法研究求 代码,在matlab是可用 收起 写回答 好问题 1 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • IT工程师_二师兄 2024-03-29 10:32
      关注

      嗯,你把具体的需求嗯写到记事本发给我

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-03-29 12:25
      关注

      【相关推荐】



      • 建议你看下这篇博客👉 :基于MATLAB计算MIMO信道容量(附完整代码与分析)
      • 除此之外, 这篇博客: MIMO(matlab)中的 小结 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

        1.仿真符号数会影响图像
        如果符号数少,会导致图像下部出现失真(将代码中符号数改为1000000即可看出差别)。

        第二种方法(以matlab文档为基础)
        代码:

        frmLen = 100;       % 数据长度
        numPackets = 1000;  % 个数
        EbNo = 0:2:20;      % 信噪比
        N = 2;              % 最大发射天线数
        M = 2;              % 最大接收天线数
        
        % BPSK
        P = 2;			
        hMod   = comm.BPSKModulator;
        hDemod = comm.BPSKDemodulator('OutputDataType','double');
        
        % 利用alzmouti方法
        hAlamoutiEnc = comm.OSTBCEncoder;
        hAlamoutiDec = comm.OSTBCCombiner;
        
        hAWGN1Rx = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (Eb/No)',...
                                    'SignalPower', 1);
        hAWGN2Rx = clone(hAWGN1Rx);
        
        % 误码率计算
        hErrorCalc1 = comm.ErrorRate;
        hErrorCalc2 = comm.ErrorRate;
        hErrorCalc3 = comm.ErrorRate;
        
        % 为提高速度预置
        H = zeros(frmLen, N, M);
        ber_noDiver  = zeros(3,length(EbNo));
        ber_Alamouti = zeros(3,length(EbNo));
        ber_MaxRatio = zeros(3,length(EbNo));
        
        grid on;
        hold on;
        ax = gca;
        ax.YScale = 'log';
        xlim([EbNo(1), EbNo(end)]);
        ylim([1e-4 1]);
        xlabel('Eb/No (dB)');
        ylabel('BER');
        title('1x1,1x2,1x3');
        
        for idx = 1:length(EbNo)
            reset(hErrorCalc1);
            reset(hErrorCalc2);
            reset(hErrorCalc3);
            
            hAWGN1Rx.EbNo = EbNo(idx);
            hAWGN2Rx.EbNo = EbNo(idx);
          
            for packetIdx = 1:numPackets
                % 生成每一帧的数据
                data = randi([0 P-1], frmLen, 1);
        
                % 调制数据
                modData = step(hMod, data);
        
                % Alamouti空时编码
                encData = step(hAlamoutiEnc, modData);
        
                %为发射天线和接收天线构造瑞利衰落响应矩阵
                H(1:N:end, :, :) = (randn(frmLen/2, N, M) + ...
                                 1i*randn(frmLen/2, N, M))/sqrt(2);
                % 假设保持两个符号周期不变
                H(2:N:end, :, :) = H(1:N:end, :, :);
        
                %  H代表1x1, 2x1, 1x2信道
                H11 = H(:,1,1);
                H21 = H(:,:,1)/sqrt(2);
                H12 = squeeze(H(:,1,:));
        
                % 经过信道传输
                chanOut11 = H11 .* modData;
                chanOut21 = sum(H21.* encData, 2);
                chanOut12 = H12 .* repmat(modData, 1, 2);
        
                % 添加AWGN(加性高斯白噪声信道)影响
                rxSig11 = step(hAWGN1Rx, chanOut11);
                rxSig21 = step(hAWGN1Rx, chanOut21);
                rxSig12 = step(hAWGN2Rx, chanOut12);
        
                % Alamouti空时编码合成
                decData = step(hAlamoutiDec, rxSig21, H21);
        
                % 最大距离检测
                demod11 = step(hDemod, rxSig11.*conj(H11));
                demod21 = step(hDemod, decData);
                demod12 = step(hDemod, sum(rxSig12.*conj(H12), 2));
        
                ber_noDiver(:,idx)  = step(hErrorCalc1, data, demod11);
                ber_Alamouti(:,idx) = step(hErrorCalc2, data, demod21);
                ber_MaxRatio(:,idx) = step(hErrorCalc3, data, demod12);
        
            end 
        
            % 画图
            semilogy(EbNo(1:idx), ber_noDiver(1,1:idx), 'r*', ...
                     EbNo(1:idx), ber_Alamouti(1,1:idx), 'go', ...
                     EbNo(1:idx), ber_MaxRatio(1,1:idx), 'bs')
                   
            legend('1x1', '2x1','1x2');
        
            drawnow;
        end 
        
        fitBER11 = berfit(EbNo, ber_noDiver(1,:));
        fitBER21 = berfit(EbNo, ber_Alamouti(1,:));
        fitBER12 = berfit(EbNo, ber_MaxRatio(1,:));
        semilogy(EbNo, fitBER11, 'r', EbNo, fitBER21, 'g', EbNo, fitBER12, 'b');
        hold off;
        

        结果
        在这里插入图片描述


      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    xgboost early_stop_rounds是如何生效的?
    技术与产品:工业革命与时代进步的缩影
    【Java并发】聊聊如何优雅的暂停一个线程以及LockSupport
    docker&kubernets篇(十八)
    剑指 Offer 16. 数值的整数次方
    IDEA操作Sharding-JDBC实战2
    burp+IE 微信小程序抓包教程
    深入理解vue2.x双向数据绑定原理
    json数据和文件操作
    合肥工业大学网络安全实验IP-Table
  • 原文地址:https://ask.csdn.net/questions/8080808