求matlab高手解答
定义函数functionerr_rate=PrimePe(snr_in_dB)E=1;snr=10^(snr_in_dB/10);sgma=sqrt((E/snr)/2)...
定义函数
function
err_rate=PrimePe(snr_in_dB)
E=1;
snr=10^(snr_in_dB/10);
sgma=sqrt((E/snr)/2);
%桢个数
N=10;
%信息序列
frame_length=260;
signal=randint(1,N*frame_length);
%不经过卷积编码
%经信道加高斯燥声
u=2*signal-1;
u=sign(u+sgma*randn(size(u))+eps);
u=(u+1)/2;
%误码率
err_rate=(length(find(signal~=u)))/length(signal);
主函数
snr_in_db=5;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
运行后出现
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Error in ==> PrimePe at 3
snr=10^(snr_in_dB/10);
求高手解答
定义函数都改为点乘和点除了
已改为u=sign(u+sgma.*randn(size(u))+eps);
主函数改为
snr_in_db=0:1:10;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
运算结果
>> snr_in_dB=0:1:10;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
??? Error using ==> times
Matrix dimensions must agree.
Error in ==> PrimePe at 13
u=sign(u+sgma.*randn(size(u))+eps);
求解释 展开
function
err_rate=PrimePe(snr_in_dB)
E=1;
snr=10^(snr_in_dB/10);
sgma=sqrt((E/snr)/2);
%桢个数
N=10;
%信息序列
frame_length=260;
signal=randint(1,N*frame_length);
%不经过卷积编码
%经信道加高斯燥声
u=2*signal-1;
u=sign(u+sgma*randn(size(u))+eps);
u=(u+1)/2;
%误码率
err_rate=(length(find(signal~=u)))/length(signal);
主函数
snr_in_db=5;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
运行后出现
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Error in ==> PrimePe at 3
snr=10^(snr_in_dB/10);
求高手解答
定义函数都改为点乘和点除了
已改为u=sign(u+sgma.*randn(size(u))+eps);
主函数改为
snr_in_db=0:1:10;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
运算结果
>> snr_in_dB=0:1:10;
err_rate=PrimePe(snr_in_dB);
plot(snr_in_db,err_rate);
??? Error using ==> times
Matrix dimensions must agree.
Error in ==> PrimePe at 13
u=sign(u+sgma.*randn(size(u))+eps);
求解释 展开
1个回答
展开全部
snr=10^(snr_in_dB/10);
这一句有问题,如果snr_in_dB/10=A = (Aij)是一个矩阵,我猜你想做下面两件事之一(感觉你是想做第一件)
1)返回一个矩阵B=(Bij),其中Bij = 10^Aij,这时你必须用运算符 .^
其中.表示按元素运算,即写成snr = 10 .^ (snr_in_dB/10)
2)如果A是一个方阵,那么10^A是有定义的,在数学上,
10^A = e^{ln10 * A},而e^{B} 定义为e^B = 1+B+B^2/2!+...+B^n/n!+...
所以如果你没用.^这个运算,matlab就理解成为上面这种情况,但是要求A是一个方阵,因而报错。
这一句有问题,如果snr_in_dB/10=A = (Aij)是一个矩阵,我猜你想做下面两件事之一(感觉你是想做第一件)
1)返回一个矩阵B=(Bij),其中Bij = 10^Aij,这时你必须用运算符 .^
其中.表示按元素运算,即写成snr = 10 .^ (snr_in_dB/10)
2)如果A是一个方阵,那么10^A是有定义的,在数学上,
10^A = e^{ln10 * A},而e^{B} 定义为e^B = 1+B+B^2/2!+...+B^n/n!+...
所以如果你没用.^这个运算,matlab就理解成为上面这种情况,但是要求A是一个方阵,因而报错。
更多追问追答
追问
那么下面的相关的乘除都要改成点乘和点除? 但是u=sign(u+sgma*randn(size(u))+eps);始终报错,求解
追答
如果是按元素运算,是的。
从你的代码看,sgma也是一个矩阵,所以也要用点乘。
不过你最好把错误信息贴出来
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询