2010-08-17 197 views
-1

我试图在N = 2时使用zeroforcing编写quadrature phase-shift keying(QPSK)的代码,并且出现错误。如何解决MATLAB中未定义的函数错误?

下面是代码:

Modulation = 'QPSK' 
Decode_Method = 'ZeroForcing' 
switch Modulation 
    case {'QPSK'} 
     Symbols = [ 1+j 1-j -1+j -1-j ]'; 
end 
Symbols = Symbols.'; 
nSymbols = length(Symbols); 

SNR_Array = [0.3 0.7 1.2 2.5 5 6.2 10 15.4 22 45 75.7 100.0]; 
nSNR = length(SNR_Array); 

Ntest = 20; 
N = 2; 

for iSNR = 1 : nSNR 
    SNR = SNR_Array(iSNR); 
    Nerror = 0; 
    for i = 1:Ntest 
     H = randn(N,N) + j*randn(N,N); 
     X = Symbols(ceil(nSymbols*rand(N,1)))'; 
     Noise = (randn(N,1) + j*randn(N,1))/sqrt(2)/sqrt(SNR); 
     Y = H*X + Noise; 
     switch Decode_Method 
      case {'ZeroForcing'} 
       X_Decode = Zero_Forcing(Y,H,Symbols); 
     end 
    end 
    Nerror = Nerror + length(find(X ~= X_Decode)); 
end 
Symbol_Error_Rate(iSNR) = Nerror/Ntest/N; 

figure(1) 
loglog(SNR_Array, Symbol_Error_Rate,'b') 
hold on 
xlabel('SNR') 
ylabel('Symbol Error Ratio') 
title('Symbol Error Ratio for NxN MIMO System') 

和错误是:

???对'double'类型的输入参数未定义的函数或方法'Zero_Forcing'。
错误==>无标题2在33
X_Decode = Zero_Forcing(Y,H,Symbols);

我该如何解决这个错误?

回答

1

该错误表示MATLAB找不到函数Zero_Forcing。如果你有这个名字的功能,你应该确保它在MATLAB路径上,也就是MATLAB知道的目录。否则,你应该写这个函数。这似乎相当重要。

此外,你可能不想调用你的函数'Untitled2',但给它一个更有意义的名字。