Как я могу исправить неопределенную ошибку функции в MATLAB? - PullRequest
0 голосов
/ 17 августа 2010

Я пытаюсь написать код для квадратурной фазовой манипуляции (QPSK) с обнулением при N = 2, и я получил ошибку.

Вот код:

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')

И ошибка:

??? Неопределенная функция или метод 'Zero_Forcing' для входных аргументов типа 'double'.
Ошибка в ==> Без названия2 в 33
X_Decode = Zero_Forcing (Y, H, символы);

Как я могу исправить эту ошибку?

1 Ответ

1 голос
/ 17 августа 2010

Ошибка указывает, что MATLAB не может найти функцию Zero_Forcing. Если у вас есть функция с таким именем, вы должны убедиться, что она находится по пути MATLAB, то есть каталог, о котором MATLAB знает. В противном случае вы должны написать функцию. Это кажется довольно важным.

Кроме того, вы можете не вызывать вашу функцию «Untitled2», а дать ей более осмысленное имя.

...