CDMA
import numpy as np
# Define orthogonal codes for 4 users
c1 = [1, 1, 1, 1]
c2 = [1, -1, 1, -1]
c3 = [1, 1, -1, -1]
c4 = [1, -1, -1, 1]
rc = []
print("Enter the data bits for 4 users (use 1 or -1):")
d1 = int(input("Enter D1 (User 1 data bit): "))
d2 = int(input("Enter D2 (User 2 data bit): "))
d3 = int(input("Enter D3 (User 3 data bit): "))
d4 = int(input("Enter D4 (User 4 data bit): "))
print("\n--- Spreading the data using code words ---")
r1 = np.multiply(c1, d1)
print(f"User 1: {d1} * {c1} = {r1}")
r2 = np.multiply(c2, d2)
print(f"User 2: {d2} * {c2} = {r2}")
r3 = np.multiply(c3, d3)
print(f"User 3: {d3} * {c3} = {r3}")
r4 = np.multiply(c4, d4)
print(f"User 4: {d4} * {c4} = {r4}")
# Superimpose all spread signals to form the final transmitted signal
resultant_channel = r1 + r2 + r3 + r4
print("\n--- Resultant Channel (Superimposed Signal) ---")
print("Sum of all spread signals:", resultant_channel)
# Choose which user's data to extract
Channel = int(input("\nEnter the station to listen for (C1=1, C2=2, C3=3, C4=4): "))
if Channel == 1:
rc = c1
print("Selected Code: C1 =", rc)
elif Channel == 2:
rc = c2
print("Selected Code: C2 =", rc)
elif Channel == 3:
rc = c3
print("Selected Code: C3 =", rc)
elif Channel == 4:
rc = c4
print("Selected Code: C4 =", rc)
# Despreading the signal using the selected user's code
inner_product = np.multiply(resultant_channel, rc)
print("\n--- Despreading Process ---")
print("Element-wise multiplication of channel and selected code:")
print(f"{resultant_channel} * {rc} = {inner_product}")
# Recover the original data bit
res1 = sum(inner_product)
data = res1 / len(inner_product)
print("\n--- Recovered Data ---")
print(f"Sum of inner product: {res1}")
print(f"Recovered data bit (sum / length): {data}")