qammodについての質問です。

5 views (last 30 days)
友將
友將 on 25 Aug 2022
Commented: 友將 on 25 Aug 2022
古い教材の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)

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 25 Aug 2022
修正すべき点が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 Comments
友將
友將 on 25 Aug 2022
ありがとうございます。 よろしくお願いします。

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!