def main(): """Main function. """ K = 3 Nr = 4 Nt = 4 Ns = 2 SNR = 30.0 P = 1.0 # Dependent parameters noise_var = 1 / dB2Linear(SNR) RepMax = 1 mmse_sinrs = np.empty([RepMax, K, Ns], dtype=float) max_sinr_sinrs = np.empty([RepMax, K, Ns], dtype=float) mmse_capacity = np.empty(RepMax, dtype=float) max_sinr_capacity = np.empty(RepMax, dtype=float) pbar = ProgressbarText(RepMax, message="Simulating for SNR: {0}".format(SNR)) for rep in range(RepMax): # Creat the channel multiUserChannel = pyphysim.channels.multiuser.MultiUserChannelMatrix() multiUserChannel.randomize(Nr, Nt, K) multiUserChannel.noise_var = noise_var # Creat the IA solver object mmse_ia_solver = algorithms.MMSEIASolver(multiUserChannel) max_sinr_ia_solver = algorithms.MaxSinrIASolver(multiUserChannel) mmse_ia_solver.randomizeF(Ns, P) mmse_ia_solver.initialize_with = 'fix' max_sinr_ia_solver.initialize_with = 'fix' # noinspection PyProtectedMember max_sinr_ia_solver._F = mmse_ia_solver._F #mmse_ia_solver.initialize_with = 'fix' # We wouldn't need to explicitly set ia_solver.noise_var # variable if the multiUserChannel object had the correct value at # this point. # mmse_ia_solver.noise_var = noise_var mmse_ia_solver.max_iterations = 200 mmse_ia_solver.solve(Ns) # max_sinr_ia_solver.noise_var = noise_var max_sinr_ia_solver.max_iterations = 200 max_sinr_ia_solver.solve(Ns) mmse_sinrs[rep] = list(map(linear2dB, mmse_ia_solver.calc_SINR())) max_sinr_sinrs[rep] = list(map(linear2dB, max_sinr_ia_solver.calc_SINR())) mmse_capacity[rep] = np.sum(calc_capacity(mmse_ia_solver.calc_SINR())) max_sinr_capacity[rep] = np.sum(calc_capacity(max_sinr_ia_solver.calc_SINR())) # print "MMSE Alt. SINRs:\n{0}".format(np.vstack(mmse_sinrs[rep])) # print "Max SINR Alg. SINRs:\n{0}".format(np.vstack(max_sinr_sinrs[rep])) # print "MMSE Alt. Capacity: {0}".format(np.sum(calc_capacity(mmse_sinrs[rep]))) # print "Max SINR Alg. Capacity: {0}".format(np.sum(calc_capacity(max_sinr_sinrs[rep]))) # print pbar.progress(rep) print("MMSE Average SINRs:\n{0}".format(mmse_sinrs.mean(0))) print("Max SINR Average SINRs:\n{0}".format(max_sinr_sinrs.mean(0))) print("MMSE Average Capacity: {0}".format(mmse_capacity.mean())) print("Max SINR Average Capacity: {0}".format(max_sinr_capacity.mean())) print("\nEnd!")
alt_min_SINRs = np.empty(rep_max, dtype=np.ndarray) max_sinr_SINRs = np.empty(rep_max, dtype=np.ndarray) mmse_SINRs = np.empty(rep_max, dtype=np.ndarray) alt_min_capacity = np.empty(rep_max, dtype=np.ndarray) max_sinr_capacity = np.empty(rep_max, dtype=np.ndarray) mmse_capacity = np.empty(rep_max, dtype=np.ndarray) alt_min_sum_capacity = np.empty(rep_max, dtype=float) max_sinr_sum_capacity = np.empty(rep_max, dtype=float) mmse_sum_capacity = np.empty(rep_max, dtype=float) alt_min_runned_iterations = np.empty(rep_max, dtype=int) max_sinr_runned_iterations = np.empty(rep_max, dtype=int) mmse_runned_iterations = np.empty(rep_max, dtype=int) pbar = ProgressbarText(rep_max, message="Simulating for SNR: {0}".format(SNR)) for rep in range(rep_max): multiuserchannel.randomize(Nr, Nt, K) alt_min_solver.clear() max_sinr_solver.clear() mmse_solver.clear() alt_min_runned_iterations[rep] = alt_min_solver.solve(Ns, P) max_sinr_runned_iterations[rep] = max_sinr_solver.solve(Ns, P) mmse_runned_iterations[rep] = mmse_solver.solve(Ns, P) mmse_solver.calc_sum_capacity() # print "Alt Min" (alt_min_SINRs[rep], alt_min_capacity[rep],
def main(): """Main function. """ K = 3 Nr = 4 Nt = 4 Ns = 2 SNR = 30.0 P = 1.0 # Dependent parameters noise_var = 1 / dB2Linear(SNR) RepMax = 1 mmse_sinrs = np.empty([RepMax, K, Ns], dtype=float) max_sinr_sinrs = np.empty([RepMax, K, Ns], dtype=float) mmse_capacity = np.empty(RepMax, dtype=float) max_sinr_capacity = np.empty(RepMax, dtype=float) pbar = ProgressbarText(RepMax, message="Simulating for SNR: {0}".format(SNR)) for rep in range(RepMax): # Creat the channel multiUserChannel = pyphysim.channels.multiuser.MultiUserChannelMatrix() multiUserChannel.randomize(Nr, Nt, K) multiUserChannel.noise_var = noise_var # Creat the IA solver object mmse_ia_solver = algorithms.MMSEIASolver(multiUserChannel) max_sinr_ia_solver = algorithms.MaxSinrIASolver(multiUserChannel) mmse_ia_solver.randomizeF(Ns, P) mmse_ia_solver.initialize_with = "fix" max_sinr_ia_solver.initialize_with = "fix" # noinspection PyProtectedMember max_sinr_ia_solver._F = mmse_ia_solver._F # mmse_ia_solver.initialize_with = 'fix' # We wouldn't need to explicitly set ia_solver.noise_var # variable if the multiUserChannel object had the correct value at # this point. # mmse_ia_solver.noise_var = noise_var mmse_ia_solver.max_iterations = 200 mmse_ia_solver.solve(Ns) # max_sinr_ia_solver.noise_var = noise_var max_sinr_ia_solver.max_iterations = 200 max_sinr_ia_solver.solve(Ns) mmse_sinrs[rep] = list(map(linear2dB, mmse_ia_solver.calc_SINR())) max_sinr_sinrs[rep] = list(map(linear2dB, max_sinr_ia_solver.calc_SINR())) mmse_capacity[rep] = np.sum(calc_capacity(mmse_ia_solver.calc_SINR())) max_sinr_capacity[rep] = np.sum(calc_capacity(max_sinr_ia_solver.calc_SINR())) # print "MMSE Alt. SINRs:\n{0}".format(np.vstack(mmse_sinrs[rep])) # print "Max SINR Alg. SINRs:\n{0}".format(np.vstack(max_sinr_sinrs[rep])) # print "MMSE Alt. Capacity: {0}".format(np.sum(calc_capacity(mmse_sinrs[rep]))) # print "Max SINR Alg. Capacity: {0}".format(np.sum(calc_capacity(max_sinr_sinrs[rep]))) # print pbar.progress(rep) print("MMSE Average SINRs:\n{0}".format(mmse_sinrs.mean(0))) print("Max SINR Average SINRs:\n{0}".format(max_sinr_sinrs.mean(0))) print("MMSE Average Capacity: {0}".format(mmse_capacity.mean())) print("Max SINR Average Capacity: {0}".format(max_sinr_capacity.mean())) print("\nEnd!")
alt_min_SINRs = np.empty(rep_max, dtype=np.ndarray) max_sinr_SINRs = np.empty(rep_max, dtype=np.ndarray) mmse_SINRs = np.empty(rep_max, dtype=np.ndarray) alt_min_capacity = np.empty(rep_max, dtype=np.ndarray) max_sinr_capacity = np.empty(rep_max, dtype=np.ndarray) mmse_capacity = np.empty(rep_max, dtype=np.ndarray) alt_min_sum_capacity = np.empty(rep_max, dtype=float) max_sinr_sum_capacity = np.empty(rep_max, dtype=float) mmse_sum_capacity = np.empty(rep_max, dtype=float) alt_min_runned_iterations = np.empty(rep_max, dtype=int) max_sinr_runned_iterations = np.empty(rep_max, dtype=int) mmse_runned_iterations = np.empty(rep_max, dtype=int) pbar = ProgressbarText(rep_max, message="Simulating for SNR: {0}".format(SNR)) for rep in range(rep_max): multiuserchannel.randomize(Nr, Nt, K) alt_min_solver.clear() max_sinr_solver.clear() mmse_solver.clear() alt_min_runned_iterations[rep] = alt_min_solver.solve(Ns, P) max_sinr_runned_iterations[rep] = max_sinr_solver.solve(Ns, P) mmse_runned_iterations[rep] = mmse_solver.solve(Ns, P) mmse_solver.calc_sum_capacity() # print "Alt Min" (alt_min_SINRs[rep],