qammodについての質問です。

5 次查看(过去 30 天)
友將
友將2022-8-25
评论: 友將 ,2022-8-25
古い教材のMATLABプログラムで qammod関数でエラーが発生しています。
エラー: qammod>validatePVpair (行 187) 'SymbolOrder' は認識されたパラメーターではありません。 名前と値の有効なペア引数のリス トは、この関数のドキュメンテーションを参照してください。
エラー: qammod>validateInputArgs (行 132) validatePVpair(varargin{1:end});
エラー: qammod (行 93) plotConstellation, outputDataType] = validateInputArgs(M, varargin{:});
エラー: CFO_estimation (行 7) h=qammod('M',M,'SymbolOrder','gray');
というエラーです。
どこを改善すればよろしいでしょうか 下記がそのプログラムです。
%CFO_estimation.m
%Time-domain CP based method and Frequency-domain(Moose/Classen)method
clear,clf
CFO=0.15;
Nfft=128;
Nbps=2;M=2^Nbps;
h=qammod('M',M,symOrder,'gray');
Es=1; A=sqrt(3/2/(M-1)*Es);
N=Nfft;Ng=Nfft/4;Nofdm=Nfft+Ng;Nsym=3;
x=[];
for m=1:Nsym
msgint=randin(1,N,M);
if i<=2, Xp=add_pilot(zeros(1,Nfft),Nfft,4); Xf=Xp;
else Xf = A*modulate(h,msgint);
end
xt=ifft(Xf,Nfft);
x_sym=add_CP(xt,Ng);
x=[x x_sym];
end
y=x;
sig_pow=y*y'/length(y);
SNRdBs=0:3:30; MaxIter=100;
for i=1:length(SNRdBs)
SNRdB=SNRdBs(i);
MSE_CFO_CP=0; MSE_CFO_Moose=0; MSE_CFO_Classen=0;
rand('seed',1); randn('seed',1);
y_CFO=add_CFO(y,CFO,Nfft);
for iter=1:MaxIter
y_aw=awgn(y_CFO,SNRdB,'measured');
CFO_est_CP=CFO_CP(y_aw,Nfft,Ng);
MSE_CFO_CP=MSE_CFO_CP+(CFO_est_CP-CFO)^2;
CFO_est_Moose=CFO_Moose(y_aw,Nfft);
MSE_CFO_Moose=MSE_CFO_Moose+(CFO_est_Moose-CFO)^2;
CFO_est_Classen=CFO_Classen(y_aw,Nfft,Ng,Xp);
MSE_CFO_Classen=MSE_CFO_Classen+(CFO_est_Classen-CFO)^2;
end
MSE_CP(i)=MSE_CFO_CP/MaxIter; MSE_Moose(i)=MSE_CFO_Moose/MaxIter;
MSE_Classen(i)=MSE_CFO_Classen/MaxIter;
end
semilogy(SNRdBs,MSE_CP,'-+'), grid on, hold on
semilogy(SNRdBs,MSE_Moose,'-x'),semilogy(SNRdBs,MSE_Classen,'-*')
xlabel('SNR[dB]'),ylabel('MSE');title('CFO Estimation');
legend('CP-based technique','Moose',Classen)

采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-8-25
修正すべき点が2点あります。引数の書き方が何種類かあって混乱しますね。
【誤】h = qammod(x, M, symOrder ,'gray'); % 'gray'は3番目の引数symOrderの位置に書く必要がある
【誤】h = qammod(x, M,'symOrder','gray'); % symOrderは名前と値の引数ではなく、この書き方も誤り
【正】h = qammod(x, M,'gray'); % symOrderは引数であり、この位置に'gray'と入力する必要がある
【誤】h = qammod('M', M); % 1番目の引数xに文字配列'M'を入力出来ない(77にはならない) 
【誤】h = qammod( x , M); % 1番目の引数xに入力できるのは、スカラー | ベクトル | 行列 | 3次元配列
【正】y = qammod(d,M,'bin','PlotConstellation', true); % 名前と値の引数と併記する場合はこの書き方になる
【正】y = qammod(d,M,'bin', PlotConstellation = true); % 新しい記述方法だと名前と値の引数はこの書き方になる
  3 个评论
友將
友將 2022-8-25
ありがとうございます。 よろしくお願いします。

请先登录,再进行评论。

更多回答(0 个)

标签

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!