Skip to content

how to generate channel matrix based on specific model? #716

Open
@Trans-cending

Description

@Trans-cending

Hello! Thanks for your open-source Sionna which benefits our research. But I have some problems in obtaining channel matrix. I would like to use ray-tracing in a specific loaded scene to generate channel matrix. I had one Tx (ULA with 8 antennas) and one Rx (ULA with 4 antennas) in the scene. The overall process I did was

a, tau = paths.cir()
h_freq = cir_to_ofdm_channel(scene.frequency, a, tau, normalize=False)
# h_freq dimension: (1, 1, 4, 1, 8, 11, 1)
# h = paths.a[0,0,:,0,:,0,0]
h = h_freq[0,0,:,0,:,0,0]

The abs value of channel h
image

However, when I delved into the channel model of h_freq, I was cofused that "where is the channel steering vector"? Normally, our research is based on the geometric model like this:
image
But I didn't know how to get the beta_l^k from ray-tracing results. I tried to reset Tx and Rx with only one antenna element and recovered the channel matrix based on the model in the figure. The abs value of channel h is shown below:

image

The code I used is shown below

import tensorflow as tf
import numpy as np

def steering_vector_ula(N, theta):
    x = np.arange(0, N).reshape(-1, 1)
    return 1 / np.sqrt(N) * np.exp(1j*np.pi*theta*x)

def reconstruct_H_ula(a_b, paths, n_ue, n_bs):
    num_paths = a_b.shape[-2]
    H = 0.
    for i in range(num_paths):
        a_ue = steering_vector_ula(n_ue, paths.phi_r[0,0,0,0,0,i].numpy())
        a_bs = steering_vector_ula(n_bs, paths.phi_t[0,0,0,0,0,i].numpy())
        H += a_b[0,0,0,0,0,i,0] * a_ue @ np.conjugate(a_bs).T
        print(paths.phi_r[0,0,0,0,0,i]*180/np.pi,paths.phi_t[0,0,0,0,0,i]*180/np.pi)
    return H

plt.figure(figsize=(4,4))
h = reconstruct_H_ula(a, paths, 4, 8)
sns.heatmap(abs(h))
plt.xlabel('BS side')
plt.ylabel('UE side')

So, I would like to learn how to extract parameters in the geometric channel model and obtain channel related parameters in Sionna. Thanks. I ensure that the position and orientation of two conditions were identical.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions