I have two variables p_1, and p_2. Basically, they represent the channel matrix
[p_1 1 - p_1; 1 - p_2 p_2]
Now, I have followed this link to compute mutual information (https://www.cvxpy.org/examples/applications/Channel_capacity_BV4.57.html). However, whenever I try to c = np.sum(P*np.log2(P),axis=0), it shows the error ‘‘Variable’ object has no attribute ‘log2’’. My code is below:
import cvxpy as cp
import numpy as np
p1 = cp.Variable()
p2 = cp.Variable()
p0 = 0.5
P = np.array([[p1, 1- p1],
[1 - p2, p2]])
x = np.array([[p0],
[1 - p0]])
y = P * x
c = np.sum(P*np.log2( P ),axis=0)
I have two questions. 1. Why am I getting the previous error? 2. Is it possible to have optimization variable in log2 term and still solve the optimization problem using cvxpy?