You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中MSE与SNR仿真输出7*50矩阵 如何得到预期7*1矩阵

问题原因

  • 原代码中n=50,调用normrnd时指定输出维度为[1,n],会生成1行50列的高斯噪声向量
  • zi初始化维度为7*50,循环中将1行50列的计算结果赋值给zi(i,:)(第i行所有列),最终自然得到7×50的矩阵

调整方案

如果你需要每个SNR对应1个计算结果,得到7×1的输出,只要修改3处即可:

  1. 移除不必要的n=50参数,或调整噪声生成的维度为标量
  2. 将zi的初始化维度改为和SNR长度匹配的列向量
  3. 循环中每次仅生成1个噪声值,赋值给zi的对应位置

修改后完整代码

x=2;
snr = -5:5:25;
zi = zeros(length(snr),1); % 用length(snr)适配SNR数量,后续修改SNR范围不用手动调整行数
mu = 1;
for i=1:length(snr)
    sigma(1,i) =  sqrt(1/(10^(snr(1,i)/10)));
    % 生成标量高斯噪声
    wi = normrnd(mu,sigma(1,i));
    zi(i) = x + wi;
end

运行上述代码后zi就是你需要的7×1维度的向量,每个元素对应一个SNR下的计算结果。

可选场景适配:如果你保留n=50是为了每个SNR下做50次重复实验取平均得到更稳定的结果,也可以不改噪声生成维度,只在赋值时对wi取平均即可,代码如下:

n=50;
x=2;
snr = -5:5:25;
zi = zeros(length(snr),1);
mu = 1;
for i=1:length(snr)
    sigma(1,i) =  sqrt(1/(10^(snr(1,i)/10)));
    wi = normrnd(mu,sigma(1,i),[1,n]);
    zi(i) = x + mean(wi); % 对50次采样的噪声取平均
end

内容的提问来源于stack exchange,提问作者matlabsad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:24:09