## 3 Methods
### Joint Antenna Selection and Orthogonality-Based User Scheduling  
Within this subsection, the JAS-OUS algorithm is introduced, which takes advantage of the spatial selectivity and multi-user diversity, to achieve maximum system sum rate. The basic idea of the introduced scheme is to remove the antenna contributing the least to the system in each iteration. At the same time, the users who exhibit good orthogonality in each iteration are selected to form a subset of users. The algorithm is terminated when the final number of selected antennas is \(N_{RF}\). The algorithm takes the channel matrix \(\mathbf{H}\) as input and adopts the classical successive elimination method for antenna selection. It begins with initialization, assuming that all transmit antennas are initially selected, i.e., \(\mathcal{A}=\{1,2,\ldots,N_{t}\}\). Then, the algorithm per forms \(N_{t}-N_{RF}\) iterations, where in each iteration, one antenna with the least contribution is removed. Eventually, only \(N_{RF}\) antennas are retained for signal transmission. In each iteration, all currently active antennas are examined. For each antenna, it is temporarily deactivated, and the OUS algorithm is used to determine the best user group under the current antenna configuration. Based on the selected antenna-user combination, the system sum rate is computed. By comparing the sum rates across all possible antenna deactivations, the antenna whose removal results in the highest sum rate is identified as having the least contribution to the system and is thus removed. After \(N_{t}-N_{RF}\) iterations, the final set of selected antennas \(\mathcal{A}\) and the set of scheduled users \(\mathcal{S}\) are obtained. The pseudocode of JAS-OUS is given by Algorithm 1. ```
0: Channel matrix \(\mathbf{H}\);  Number of RF chains \(N_{RF}\);  Transmit antenna \(N_{t}\);
1: Initialization: \(t=1\); \(\mathcal{A}=\{1,2,\ldots,N_{t}\}\);
2: while \(t<(N_{t}-N_{RF})\) do \(maxRate=0\);
3: for each \(i\) in \(\mathcal{A}\), do \(\mathbf{\tilde{H}}\leftarrow\mathcal{A}\backslash\{i\}\); \(\mathcal{S}\leftarrow\) choose \(K\) users using \(\text{OUS}\left(\mathbf{\tilde{H}},N_{RF}\right)\); \(R_{-i}=R_{sum}(\mathcal{A}\backslash\{i\},\mathcal{S})\);
4: if \(R_{-i}>maxRate\), then \(maxRate=R_{-i}\); \(i_{worst}=i\);  end end
5: \(\mathcal{A}=\mathcal{A}\backslash\{i_{worst}\}\); \(t=t+1\);  end end Output:  the set of selected antennas \(\mathcal{A}\);  the set of scheduled users \(\mathcal{S}\)
```  
**Algorithm 1**JAS-OUS  
The user scheduling part is given by the orthogonality-based user scheduling algorithm. It takes channel \(\mathbf{\tilde{H}}\) as input, which is formed by removing the current \(i\)th transmitting antenna, and finally outputs the group of scheduled users \(\mathcal{S}\), which contains \(K\) users. First, initialization is performed so that \(\mathcal{S}\) is an empty set. The first user is scheduled according to a rule that selects the one with the maximum channel power. Next, scheduling is performed for the rest of the users. At each iteration, a user is selected to be included in set \(\mathcal{S}\). The selection criterion is to minimize the orthogonality coefficient between the current round's selected user and all previously chosen users, i.e., to ensure good orthogonality between this selected user and the previously selected users. The operation is repeated until \(K\) users are selected to form the final set of scheduled users. Algorithm 2 provides the pseudocode of OUS. ```
Input:  Channel matrix \(\widetilde{\mathbf{H}}\);  Number of users to be selected \(K\);
1: Initialization: \(X=\{1,2,\ldots,U\}\); \(\mathcal{S}=\varnothing\); \(n=1\);
2:\(I=\underset{i\in X}{\arg\max}norm\left(\widetilde{\mathbf{H}}(i,. )\right)\); \(s_{1}=X(I)\); \(\mathcal{S}=\mathcal{S}\cup\{s_{1}\}\); \(X(I)=\varnothing\); \(n=n+1\);
3: while \(2\leqslant n\leqslant K\)do \(M=\mathrm{numcl}(X)\);
4: while \(1\leqslant j\leqslant M\) do \(b(j)=\sum\limits_{c=1}^{n-1}\frac{\left|\widetilde{\mathbf{H}}(X(j),. )* \widetilde{\mathbf{H}}(\mathcal{T}(c),.