Почему NMSE превышает 1 при использовании истинного канала в качестве знаменателя?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему NMSE превышает 1 при использовании истинного канала в качестве знаменателя?

Сообщение Anonymous »

Я рассчитываю нормализованную среднеквадратическую ошибку (NMSE) с помощью моделирования Монте-Карло для оценки отклика канала H. Вот код:

Код: Выделить всё

import random
import numpy as np
import os
import matplotlib.pyplot as plt

# Noise Power in dB
no_dB= 20
noise_power=10**(      (no_dB-30)/10        )

# Range of signal power
start,  end,  Monte_carlo  =  -40,   20,      10**3
po_dB = np.arange(start, end+1, 5)
power = 10.0 ** ((po_dB) / 10.0)
NMSE = []
for p in power:
nmse = 0
for S in range(0, Monte_carlo):

# Y= Hx + N (Estimating The channel response)

# Channel power
H = (np.random.normal(0, np.sqrt(1/2), 4) + 1j*np.random.normal(0, np.sqrt(1/2), 4))

# Receiver NOISE power AWGN
N   = np.sqrt(noise_power/2) * (np.random.randn(1, 4) + 1j * np.random.randn(1, 4))

# Known Signal
xp= np.sqrt(p/2)*(np.random.randn() + 1j * np.random.randn())
Xp = np.kron(np.eye(4),xp)
X_p_dag = np.linalg.pinv(Xp)

Y = H@Xp + N

# Estimate
H_hat=Y@X_p_dag

# Error
err=N@X_p_dag

nmse = nmse + np.linalg.norm(err, 2)**2/np.linalg.norm(H_hat, 2)**2

NMSE.append((nmse / Monte_carlo))

print(10*np.log10(p))

plt.plot(po_dB, NMSE,    linewidth='2.5', color='green')# Simulation_cas

plt.xlabel('Signal Power')
plt.ylabel('NMSE')
plt.grid()

plt.yscale("log")
plt.xlim([-20, 20])
plt.ylim([10 ** -4, 10 ** 0])
plt.legend(['NMSE'])
plt.show()
Я помещаю предполагаемый канал в знаменатель, как и в этой строке:

Код: Выделить всё

nmse = nmse + np.linalg.norm(err, 2)**2/np.linalg.norm(H_hat, 2)**2
NMSE меньше единицы, и график очень разумен.
Насколько мне известно, формула NMSE утверждает, что знаменатель должен быть квадрат нормы истинного канала, но при помещении истинного канала (np.linalg.norm(H, 2)**2) в знаменатель, результаты NMSE больше единицы
Почему это происходит, учитывая, что Формула NMSE указывает истинный канал в знаменателе? есть ли какие-либо условия для этого правила и правильно ли я сделал, используя оценку?

Подробнее здесь: https://stackoverflow.com/questions/793 ... enominator
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»