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}")
Next Post Previous Post
No Comment
Add Comment
comment url