分治法-循环赛日程表

博客围绕有n = 2^k个运动员的网球循环赛日程表问题展开。赛程需满足每个选手与其他n - 1个选手各赛一次、一天只能参赛一次且在n - 1天内结束。解题思路是将比赛日程表设计成n行n - 1列表,填入对应选手比赛信息,还给出了代码及运行结果。

问题描述
循环赛日程表:有n = 2^k个运动员要进行网球循环赛
赛程表满足:
每个选手必须与其他n-1个选手各赛一次
每个选手一天只能参赛一次
循环赛在n-1天内结束
解题思路
将比赛日程表设计成一个n行和n-1列的表,第i行,第j列分别填入第i个选手在第j天所遇到的选手
代码

package FenZhiJieXianFa;

/**
 * 例子:
 * 4个选手
 * ---------
 * |1|2|3|4|
 * ---------
 * |2|1|4|3|
 * ---------
 * |3|4|1|2|
 * ---------
 * |4|3|2|1|
 * ---------
 * 分治思想:将所有区域看成四块,区域1:(0,i) 区域2:(0,r+i) 区域3:(r,i) 区域4:(r,r+i)
 *  递归执行的是区域1拷贝到区域4,区域2拷贝到区域3
 * ---------
 * | 1 | 2 |
 * ---------
 * | 3 | 4 |
 * ---------
 *
 */
public class XunhuanSaiRichengBiao {
    public static int[][] table(int k){
        int n = 1<<k;
        int[][] a = new int[n][n];
        //构造赛程表第一行数据
        for(int i = 0; i<n;i++)
            a[0][i] = i+1;
        //采用分治算法,构造整个赛程表
        for(int r = 1;r<n;r<<=1){
            for(int i =0;i<n;i += 2*r){
                copy(a,r,r+i,0,i,r);
                copy(a,r,i,0,r+i,r);
            }
        }
        return a;
    }
    
    private static void copy(int[][] a, int tox, int toy, 
            int fromx, int fromy, int r){
        for(int i =0;i<r;i++){
            for(int j = 0;j<r;j++){
                a[tox+i][toy+j] = a[fromx+i][fromy+j];
            }
        }
        
    }
        
    
    
    public static void main(String[] args) {

        int[][] a = table(4);
        for(int i=0;i<a.length;i++){
            for(int j = 0;j<a[0].length;j++){
                System.out.print(a[i][j] + "ss ");
            }
            System.out.println();
        }

    }

}

运行结果

5ss 6ss 7ss 8ss 1ss 2ss 3ss 4ss 13ss 14ss 15ss 16ss 9ss 10ss 11ss 12ss 
6ss 5ss 8ss 7ss 2ss 1ss 4ss 3ss 14ss 13ss 16ss 15ss 10ss 9ss 12ss 11ss 
7ss 8ss 5ss 6ss 3ss 4ss 1ss 2ss 15ss 16ss 13ss 14ss 11ss 12ss 9ss 10ss 
8ss 7ss 6ss 5ss 4ss 3ss 2ss 1ss 16ss 15ss 14ss 13ss 12ss 11ss 10ss 9ss 
9ss 10ss 11ss 12ss 13ss 14ss 15ss 16ss 1ss 2ss 3ss 4ss 5ss 6ss 7ss 8ss 
10ss 9ss 12ss 11ss 14ss 13ss 16ss 15ss 2ss 1ss 4ss 3ss 6ss 5ss 8ss 7ss 
11ss 12ss 9ss 10ss 15ss 16ss 13ss 14ss 3ss 4ss 1ss 2ss 7ss 8ss 5ss 6ss 
12ss 11ss 10ss 9ss 16ss 15ss 14ss 13ss 4ss 3ss 2ss 1ss 8ss 7ss 6ss 5ss 
13ss 14ss 15ss 16ss 9ss 10ss 11ss 12ss 5ss 6ss 7ss 8ss 1ss 2ss 3ss 4ss 
14ss 13ss 16ss 15ss 10ss 9ss 12ss 11ss 6ss 5ss 8ss 7ss 2ss 1ss 4ss 3ss 
15ss 16ss 13ss 14ss 11ss 12ss 9ss 10ss 7ss 8ss 5ss 6ss 3ss 4ss 1ss 2ss 
16ss 15ss 14ss 13ss 12ss 11ss 10ss 9ss 8ss 7ss 6ss 5ss 4ss 3ss 2ss 1ss 
ok,现在换到下一个速率集WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1, WL_RATE_2X2_EHT12SS2, WL_RATE_2X2_EHT13SS2, WL_RATE_2X2_TXBF_EHT12SS2, WL_RATE_2X2_TXBF_EHT13SS2, /* 6G 40M rate set 1 */ 12, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, /* 6G 40M rate set 2 */ 16, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, /* 6G 40M rate set 3 */ 20, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 4 */ 20, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, /* 6G 40M rate set 5 */ 24, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 6 */ 24, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 7 */ 24, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, /* 6G 40M rate set 8 */ 28, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, WL_RATE_2X2_EHT12SS2, WL_RATE_2X2_EHT13SS2, WL_RATE_2X2_TXBF_EHT12SS2, WL_RATE_2X2_TXBF_EHT13SS2, /* 6G 40M rate set 9 */ 40, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 10 */ 44, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 11 */ 48, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1, /* 6G 40M rate set 12 */ 8, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, /* 6G 40M rate set 13 */ 84, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 14 */ 16, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, /* 6G 40M rate set 15 */ 32, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1,
10-01
你提供的新代码片段是: ```c /* 6G 40M rate set X */ N, WL_RATE_..., ... ``` 并且包含了从 `rate set 1` 到 `15` 的完整定义,还混合了 **OFDM、HE、EHT、TXBF、CDD** 等多种技术。 --- ## ✅ 目标 我们要用 Python 脚本: 1. 解析所有 `/* 6G 40M rate set ... */` 块 2. 提取每个块中的速率码(如 `WL_RATE_1X1_HE0SS1`) 3. 分类分析:标准、天线数、技术、MCS 类型等 4. 输出结构化表格(Excel 或打印) --- ## ✅ 完整可运行脚本(适配你的新格式) ```python import re import pandas as pd from typing import List, Dict, Set # ============================= # ✅ 粘贴你的完整 C 代码 # ============================= C_CODE = ''' WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1, WL_RATE_2X2_EHT12SS2, WL_RATE_2X2_EHT13SS2, WL_RATE_2X2_TXBF_EHT12SS2, WL_RATE_2X2_TXBF_EHT13SS2, /* 6G 40M rate set 1 */ 12, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, /* 6G 40M rate set 2 */ 16, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, /* 6G 40M rate set 3 */ 20, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 4 */ 20, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, /* 6G 40M rate set 5 */ 24, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 6 */ 24, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 7 */ 24, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, /* 6G 40M rate set 8 */ 28, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, WL_RATE_2X2_EHT12SS2, WL_RATE_2X2_EHT13SS2, WL_RATE_2X2_TXBF_EHT12SS2, WL_RATE_2X2_TXBF_EHT13SS2, /* 6G 40M rate set 9 */ 40, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, /* 6G 40M rate set 10 */ 44, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 11 */ 48, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1, /* 6G 40M rate set 12 */ 8, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, /* 6G 40M rate set 13 */ 84, WL_RATE_1X1_OFDM_6, WL_RATE_1X1_OFDM_9, WL_RATE_1X1_OFDM_12, WL_RATE_1X1_OFDM_18, WL_RATE_1X1_OFDM_24, WL_RATE_1X1_OFDM_36, WL_RATE_1X1_OFDM_48, WL_RATE_1X1_OFDM_54, WL_RATE_1X2_CDD_OFDM_6, WL_RATE_1X2_CDD_OFDM_9, WL_RATE_1X2_CDD_OFDM_12, WL_RATE_1X2_CDD_OFDM_18, WL_RATE_1X2_CDD_OFDM_24, WL_RATE_1X2_CDD_OFDM_36, WL_RATE_1X2_CDD_OFDM_48, WL_RATE_1X2_CDD_OFDM_54, WL_RATE_1X2_TXBF_OFDM_6, WL_RATE_1X2_TXBF_OFDM_9, WL_RATE_1X2_TXBF_OFDM_12, WL_RATE_1X2_TXBF_OFDM_18, WL_RATE_1X2_TXBF_OFDM_24, WL_RATE_1X2_TXBF_OFDM_36, WL_RATE_1X2_TXBF_OFDM_48, WL_RATE_1X2_TXBF_OFDM_54, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_2X2_HE0SS2, WL_RATE_2X2_HE1SS2, WL_RATE_2X2_HE2SS2, WL_RATE_2X2_HE3SS2, WL_RATE_2X2_HE4SS2, WL_RATE_2X2_HE5SS2, WL_RATE_2X2_HE6SS2, WL_RATE_2X2_HE7SS2, WL_RATE_2X2_HE8SS2, WL_RATE_2X2_HE9SS2, WL_RATE_2X2_HE10SS2, WL_RATE_2X2_HE11SS2, WL_RATE_2X2_TXBF_HE0SS2, WL_RATE_2X2_TXBF_HE1SS2, WL_RATE_2X2_TXBF_HE2SS2, WL_RATE_2X2_TXBF_HE3SS2, WL_RATE_2X2_TXBF_HE4SS2, WL_RATE_2X2_TXBF_HE5SS2, WL_RATE_2X2_TXBF_HE6SS2, WL_RATE_2X2_TXBF_HE7SS2, WL_RATE_2X2_TXBF_HE8SS2, WL_RATE_2X2_TXBF_HE9SS2, WL_RATE_2X2_TXBF_HE10SS2, WL_RATE_2X2_TXBF_HE11SS2, /* 6G 40M rate set 14 */ 16, WL_RATE_1X1_HE0SS1, WL_RATE_1X1_HE1SS1, WL_RATE_1X1_HE2SS1, WL_RATE_1X1_HE3SS1, WL_RATE_1X1_HE4SS1, WL_RATE_1X1_HE5SS1, WL_RATE_1X1_HE6SS1, WL_RATE_1X1_HE7SS1, WL_RATE_1X1_HE8SS1, WL_RATE_1X1_HE9SS1, WL_RATE_1X1_HE10SS1, WL_RATE_1X1_HE11SS1, WL_RATE_1X1_EHT12SS1, WL_RATE_1X1_EHT13SS1, WL_RATE_1X1_EHT14SS1, WL_RATE_1X1_EHT15SS1, /* 6G 40M rate set 15 */ 32, WL_RATE_1X2_HE0SS1, WL_RATE_1X2_HE1SS1, WL_RATE_1X2_HE2SS1, WL_RATE_1X2_HE3SS1, WL_RATE_1X2_HE4SS1, WL_RATE_1X2_HE5SS1, WL_RATE_1X2_HE6SS1, WL_RATE_1X2_HE7SS1, WL_RATE_1X2_HE8SS1, WL_RATE_1X2_HE9SS1, WL_RATE_1X2_HE10SS1, WL_RATE_1X2_HE11SS1, WL_RATE_1X2_TXBF_HE0SS1, WL_RATE_1X2_TXBF_HE1SS1, WL_RATE_1X2_TXBF_HE2SS1, WL_RATE_1X2_TXBF_HE3SS1, WL_RATE_1X2_TXBF_HE4SS1, WL_RATE_1X2_TXBF_HE5SS1, WL_RATE_1X2_TXBF_HE6SS1, WL_RATE_1X2_TXBF_HE7SS1, WL_RATE_1X2_TXBF_HE8SS1, WL_RATE_1X2_TXBF_HE9SS1, WL_RATE_1X2_TXBF_HE10SS1, WL_RATE_1X2_TXBF_HE11SS1, WL_RATE_1X2_EHT12SS1, WL_RATE_1X2_EHT13SS1, WL_RATE_1X2_EHT14SS1, WL_RATE_1X2_EHT15SS1, WL_RATE_1X2_TXBF_EHT12SS1, WL_RATE_1X2_TXBF_EHT13SS1, WL_RATE_1X2_TXBF_EHT14SS1, WL_RATE_1X2_TXBF_EHT15SS1, ''' # ============================= # 解析函数 # ============================= def parse_rate_set(c_code: str) -> List[Dict]: """ 解析 6G 40M rate set 格式 支持:/* 6G 40M rate set X */ N, ... """ pattern = re.compile( r'/\*\s*6G\s+40M\s+rate\s+set\s+(\d+)\s*\*/\s*(\d+)\s*,\s*([^/]+?)(?=/\*\s*6G\s+40M\s+rate\s+set|\Z)', re.DOTALL | re.IGNORECASE ) matches = pattern.findall(c_code) rate_sets = [] for match in matches: rate_set_id = int(match[0]) count = int(match[1]) content = match[2].strip() # 提取所有 WL_RATE_xxx rates = re.findall(r'WL_RATE_[^,\s}]+', content) rates = [r.strip() for r in rates if r.strip()] rate_sets.append({ 'id': rate_set_id, 'count': count, 'rates': rates }) return sorted(rate_sets, key=lambda x: x['id']) def classify_rate(rate: str) -> Dict: """对单个 rate code 进行分类""" info = { 'standard': 'Unknown', 'tx_chains': 1, 'rx_chains': 1, 'technology': set(), 'mcs_type': 'Unknown', 'spatial_streams': 'N/A' } # 标准判断 if 'EHT' in rate: info['standard'] = '802.11be (6GHz)' info['mcs_type'] = 'EHT-MCS' elif 'HE' in rate: info['standard'] = '802.11ax (Wi-Fi 6/6E)' info['mcs_type'] = 'HE-MCS' elif 'VHT' in rate or 'P_' in rate: info['standard'] = '802.11ac' info['mcs_type'] = 'VHT-MCS' elif 'MCS' in rate and 'OFDM' not in rate: info['standard'] = '802.11n' info['mcs_type'] = 'HT-MCS' elif 'OFDM' in rate: info['standard'] = '802.11a/g' info['mcs_type'] = 'OFDM' # 天线配置 if '_1X2_' in rate: info['tx_chains'] = 1 info['rx_chains'] = 2 elif '_2X2_' in rate: info['tx_chains'] = 2 info['rx_chains'] = 2 else: info['tx_chains'] = 1 info['rx_chains'] = 1 # 技术特性 if 'CDD' in rate: info['technology'].add('CDD') if 'STBC' in rate: info['technology'].add('STBC') if 'TXBF' in rate: info['technology'].add('TX Beamforming') if 'SDM' in rate: info['technology'].add('Spatial Multiplexing') # 空间流 if 'SS1' in rate: info['spatial_streams'] = 1 elif 'SS2' in rate: info['spatial_streams'] = 2 return info def analyze_rate_set(rs: Dict) -> Dict: """分析一个 RATE_SET""" all_info = [classify_rate(r) for r in rs['rates']] standards = sorted(set(info['standard'] for info in all_info)) technologies = sorted(set(t for info in all_info for t in info['technology'])) mcs_types = sorted(set(info['mcs_type'] for info in all_info)) spatial_streams = sorted(set(str(info['spatial_streams']) for info in all_info)) tx_chains = max(info['tx_chains'] for info in all_info) rx_chains = max(info['rx_chains'] for info in all_info) is_base = len(standards) == 1 and len(technologies) <= 1 type_label = 'Base' if is_base else 'Composite' tech_str = ', '.join(technologies) if technologies else 'None' std_str = ', '.join(standards) mcs_str = ', '.join(mcs_types) ss_str = ', '.join(spatial_streams) desc_parts = [std_str] if tx_chains == 1 and rx_chains == 1: desc_parts.append("SISO") elif tx_chains == 1 and rx_chains == 2: desc_parts.append("1x2 RX Diversity") elif tx_chains == 2 and rx_chains == 2: desc_parts.append("2x2 MIMO") if technologies: desc_parts.append('+'.join(technologies)) desc_parts.append(mcs_str) description = " + ".join(desc_parts) return { 'Set ID': rs['id'], 'Standard(s)': ', '.join(standards), 'Tx Chains': tx_chains, 'Rx Chains': rx_chains, 'Technologies': tech_str, 'MCS Types': mcs_str, 'NSS': ss_str, 'Count': rs['count'], 'Type': type_label, 'Description': description } def main(): print("[*] 开始解析 6G 40M rate sets...") rate_sets = parse_rate_set(C_CODE) if not rate_sets: print("❌ 错误:未提取到任何 rate set,请检查 C_CODE 格式!") return print(f"[*] 共找到 {len(rate_sets)} 个 RATE_SET") results = [] for rs in rate_sets: result = analyze_rate_set(rs) results.append(result) df = pd.DataFrame(results) columns = [ 'Set ID', 'Standard(s)', 'Tx Chains', 'Rx Chains', 'Technologies', 'MCS Types', 'NSS', 'Count', 'Type', 'Description' ] df = df[columns] output_file = '6g_40m_rate_set_analysis.xlsx' df.to_excel(output_file, index=False) print(f"[+] 分析完成!结果已保存至 '{output_file}'") print("\n" + df.to_string(index=False)) if __name__ == '__main__': main() ``` --- ## ✅ 输出示例(前几行) | Set ID | Standard(s) | Tx Chains | Rx Chains | Technologies | MCS Types | NSS | Count | Type | Description | |--------|----------------------------------|-----------|-----------|-------------------------|----------------|-------|-------|------------|-------------| | 1 | 802.11ax (Wi-Fi 6/6E) | 1 | 1 | None | HE-MCS | 1 | 12 | Base | 802.11ax (Wi-Fi 6/6E) + SISO + HE-MCS | | 2 | 802.11a/g | 1 | 2 | CDD, TX Beamforming | OFDM | N/A | 16 | Composite | 802.11a/g + 1x2 RX Diversity + CDD+TX Beamforming + OFDM | --- ## ✅ 功能亮点 - ✅ 自动识别 `/* 6G 40M rate set X */ N,` 格式 - ✅ 支持 EHT/HE/VHT/HT/OFDM 多标准识别 - ✅ 区分 SISO / 1x2 / 2x2 配置 - ✅ 识别 TXBF、CDD、SDM 等技术 - ✅ 输出 Excel 并带描述字段 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值