modem.oqpskmod - преобразование массива различных значений в массив из 1 и 0 - PullRequest
1 голос
/ 02 февраля 2010

привет, я делал следующее в matlab

    values = [0;1;0;0;1;0;1;0];   % can contain only 0s and 1s 
    h = modem.oqpskmod; 
    y = modulate(h, values); 
    g = modem.oqpskdemod(h); 
    z = demodulate(g,y); 
    BER = sum(logical(values(:)-z(:)))/numel(values); % thanks to gnovice!

перед вычислением BER, вы думаете, что мне нужно преобразовать массив z в массив только из 1 и 0 ... например, мой z может состоять из 3 и 0, тогда мне нужно преобразовать все числа больше чем от 0 до 1 с и все 0 без изменений. так что в конце я получу правильное сравнение для BER?

1 Ответ

1 голос
/ 02 февраля 2010

Это зависит от того, как вы хотите сделать сравнение ввода и вывода. Код, который я вам дал для вычисления BER, будет считать любую разницу между входом и выходом как ошибку. Таким образом, значение 3 для выхода и соответствующее 1 для входа учитываются как Different .

Если вы хотите вычислить BER другим способом, вот еще пара вариантов, которые вы могли бы использовать. Каждый из них предполагает, что values содержит только нули и единицы:

  • Считать любое ненулевое выходное значение как 1: В этом случае вы будете использовать функцию LOGICAL для преобразования любого не нулевое значение z (то есть значения 3, 0,5, -1 и т. д.) до 1, при этом значения, равные точно ноль, остаются неизменными:

    BER = sum(values(:)-logical(z(:)))/numel(values);
    
  • Считать положительные значения как 1 и отрицательные значения как 0: Это решение просто использует оператор сравнения вместо LOGICAL :

    BER = sum(values(:)-(z(:) > 0))/numel(values);
    

Вы также можете попробовать установить для свойства 'OutputType' объекта modem.oqpskdemod значение 'bit', чтобы обеспечить двоичный вывод. Тогда вам не нужно ничего делать с z:

...
g = modem.oqpskdemod(h,'OutputType','bit'); 
z = demodulate(g,y);
BER = sum(values(:)-z(:))/numel(values);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...