博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NR LTE UMTS GSM CDMA TDS频点频率换算工具
阅读量:4314 次
发布时间:2019-06-06

本文共 12365 字,大约阅读时间需要 41 分钟。

V1.2 2018-07-10:

1,增加UMTS GSM CDMA TDS部分计算功能。

2,暂时CDMA 只支持BC0,WCDMA不支持additional 频点

3,下方代码在新的代码中已经完全修改,留着只是参考。

链接: https://pan.baidu.com/s/1Qlboo38--EEGGU4-hQu9tg 密码: 3xyg

V1.1 2018-6-12:

1,增加了NR部分频点频率计算。

2,增加输入band计算频点频率上下限功能。 

2018-5-13:代码稍微做了些修改,已经release出来分享在百度网盘,欢迎使用。

using System;using System.Collections;using System.Collections.Generic;namespace Helloworld{    class Earfcn    {        #region 频点频率对应关系        ///         /// 下行频率频点对应关系,36141-e10        ///         private static double[,] lstFdlNdl =        {        {
0,0,0}, //Band0 {
2110,0,599}, {
1930,600,1199}, {
1805,1200,1949}, {
2110,1950,2399}, {
869,2400,2649}, //Band5 {
875,2650,2749}, {
2620,2750,3449}, {
925,3450,3799}, {
1844.9,3800,4149}, {
2110,4150,4749}, //Band10 {
1475.9,4750,4949}, {
729,5010,5179}, {
746,5180,5279}, {
758,5280,5379}, {
0,0,0}, {
0,0,0}, {
734,5730,5849}, //Band17 {
860,5850,5999}, {
875,6000,6149}, {
791,6150,6449}, //Band20 {
1495.9,6450,6599}, {
3510,6600,7399}, {
2180,7500,7699}, {
1525,7700,8039}, {
1930,8040,8689}, //Band25 {
859,8690,9039}, {
852,9040,9209}, {
758,9210,9659}, {
717,9660,9769}, {
2350,9770,9869}, //Band30 {
462.5,9870,9919}, {
1452,9920,10359}, {
1900,36000,36199}, {
2010,36200,36349}, {
1850,36350,36949}, //Band35 {
1930,36950,37549}, {
1910,37550,37749}, {
2570,37750,38249}, {
1880,38250,38649}, {
2300,38650,39649}, //Band40 {
2496,39650,41589}, {
3400,41590,43589}, {
3600,43590,45589}, {
703,45590,46589}, {
1447,46590,46789}, //Band45 {
5150,46790,54539}, {
5855,54540,55239}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
2110,65536,66435}, //Band65 {
2110,66436,67335}, {
738,67336,67535}, {
753,67536,67835}, {
2570,67836,68335}, {
1995,68336,68485} //Band70 }; /// /// 上行频率频点对应关系,36141-e10 /// static double[,] lstFulNul = { {
0,0,0}, //Band0 {
1920,18000,18599}, {
1850,18600,19199}, {
1710,19200,19949}, {
1710,19950,20399}, {
824,20400,20649}, //Band5 {
830,20650,20749}, {
2500,20750,21449}, {
880,21450,21799}, {
1749.9,21800,22149}, {
1710,22150,22749}, //Band10 {
1427.9,22750,22949}, {
699,23010,23179}, {
777,23180,23279}, {
788,23280,23379}, {
0,0,0}, {
0,0,0}, {
704,23730,23849}, //Band17 {
815,23850,23999}, {
830,24000,24149}, {
832,24150,24449}, //Band20 {
1447.9,24450,24599}, {
3410,24600,25399}, {
2000,25500,25699}, {
1626.5,25700,26039}, {
1850,26040,26689}, //Band25 {
814,26690,27039}, {
807,27040,27209}, {
703,27210,27659}, {
0,0,0}, {
2305,27660,27759}, //Band30 {
452.5,27760,27809}, {
0,0,0}, {
1900,36000,36199}, {
2010,36200,36349}, {
1850,36350,36949}, //Band35 {
1930,36950,37549}, {
1910,37550,37749}, {
2570,37750,38249}, {
1880,38250,38649}, {
2300,38650,39649}, //Band40 {
2496,39650,41589}, {
3400,41590,43589}, {
3600,43590,45589}, {
703,45590,46589}, {
1447,46590,46789}, //Band45 {
5150,46790,54539}, {
5855,54540,55239}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
0,0,0}, {
1920,131072,131971}, //Band65 {
1710,131972,132671}, {
0,0,0}, {
698,132672,132971}, {
0,0,0}, {
1695,132972,133221}, //Band70 }; #endregion 频点频率对应关系 #region 通过频率获取其他信息 /// /// 一次返回下行band 频率初始值 频点初始值,使用时需要注意返回值为ArrayList /// /// 下行频率 ///
private static ArrayList dlfrequencyToBandFlowNlow(double _frequency) { ArrayList list = new ArrayList(); for (int i = 0; i < lstFdlNdl.GetLongLength(0); i++) { if (_frequency > lstFdlNdl[i, 0] && _frequency < (lstFdlNdl[i, 0] + (lstFdlNdl[i, 2] - lstFdlNdl[i, 1]) / 10)) { list.Add(i); list.Add(lstFdlNdl[i, 0]); list.Add(lstFdlNdl[i, 1]); } } return list; } /// /// 一次性返回上行band 频率初始值 频点初始值,使用时需要注意返回值为ArrayList /// /// 上行频点 ///
private static ArrayList ulfrequencyToBandFlowNlow(double _frequency) { ArrayList list = new ArrayList(); for (int i = 0; i < lstFulNul.GetLongLength(0); i++) { if (_frequency > lstFulNul[i, 0] && _frequency < (lstFulNul[i, 0] + (lstFulNul[i, 2] - lstFulNul[i, 1]) / 10)) { list.Add(i); list.Add(lstFulNul[i, 0]); list.Add(lstFulNul[i, 1]); } } return list; } /// /// 根据下行频率计算下行频点 /// /// 下行频率 ///
public static int[] GetearfcnDl(double _frequency) { ArrayList list = dlfrequencyToBandFlowNlow(_frequency); List
earfcns = new List
(); for (int i = 1; i < list.Count; i += 3) { earfcns.Add(Convert.ToInt32(list[i + 1]) + (int)((_frequency - (double)list[i]) * 10)); } return earfcns.ToArray(); } ///
/// 根据上行频率计算上行频点 /// ///
上行频率 ///
public static int[] GetearfcnUl(double _frequency) { ArrayList list = ulfrequencyToBandFlowNlow(_frequency); List
earfcns = new List
(); for (int i = 1; i < list.Count; i += 3) { earfcns.Add(Convert.ToInt32(list[i + 1]) + (int)((_frequency - (double)list[i]) * 10)); } return earfcns.ToArray(); } ///
/// 根据下行频率计算Band /// ///
///
public static int[] GetBandByDlFre(double _frequency) { ArrayList list = dlfrequencyToBandFlowNlow(_frequency); ArrayList Bands = new ArrayList(); for (int i = 0; i < list.Count; i += 3) { Bands.Add((int)list[i]); } return (int[])Bands.ToArray(typeof(Int32)); } ///
/// 根据上行频率计算Band /// ///
///
public static int[] GetBandByUlFre(double _frequency) { ArrayList list = ulfrequencyToBandFlowNlow(_frequency); ArrayList Bands = new ArrayList(); for (int i = 0; i < list.Count; i += 3) { Bands.Add((int)list[i]); } return (int[])Bands.ToArray(typeof(Int32)); } #endregion 通过频率获取其他信息 #region 通过频点获取其他信息 ///
/// 一次返回下行band 频率初始值 频点初始值,使用时需要注意返回值为数组[band,起始频率,起始频点] /// ///
下行频点 ///
private static double[] dlearfcnToBandFlowNlow(int _earfcn) { double[] list = new double[3]; for (int i = 0; i < lstFulNul.GetLongLength(0); i++) { if (_earfcn > lstFdlNdl[i, 1] && _earfcn < lstFdlNdl[i, 2]) { list[0] = (double)i; list[1] = lstFdlNdl[i, 0]; list[2] = lstFdlNdl[i, 1]; } } return list; } ///
/// 一次性返回上行band 频率初始值 频点初始值,使用时需要注意返回值为数组[band,起始频率,起始频点] /// ///
上行频点 ///
private static double[] ulearfcnToBandFlowNlow(int _earfcn) { double[] list = new double[3]; for (int i = 0; i < lstFulNul.GetLongLength(0); i++) { if (_earfcn > lstFulNul[i, 1] && _earfcn < lstFulNul[i, 2]) { list[0] = i; list[1] = lstFulNul[i, 0]; list[2] = lstFulNul[i, 1]; } } return list; } ///
/// 根据下行频点获取物理频率 /// ///
LTE下行频点 ///
public static double GetFreDl(int _earfcn) { double[] list = dlearfcnToBandFlowNlow(_earfcn); double frequency = list[1] + (_earfcn - list[2]) / 10; return frequency; } ///
/// 根据上行频点获取物理频率 /// ///
LTE上行频点 ///
public static double GetFreUl(int _earfcn) { double[] list = ulearfcnToBandFlowNlow(_earfcn); double frequency = list[1] + (_earfcn - list[2]) / 10; return frequency; } ///
/// 根据下行频点获取Band /// ///
LTE下行频点 ///
public static int GetBandByDlearfcn(int _earfcn) { double[] list = dlearfcnToBandFlowNlow(_earfcn); return (int)list[0]; } ///
/// 根据上行频点获取Band /// ///
LTE上行频点 ///
public static int GetBandByUlearfcn(int _earfcn) { double[] list = ulearfcnToBandFlowNlow(_earfcn); return (int)list[0]; } #endregion 通过频点获取其他信息 #region 中移动相关 ///
/// 根据下行频点获取中移动规范子频段 /// ///
LTE下行中心频点 ///
public static string GetCmccBandByErcfcn(int _earfcn) { double frequency = GetFreDl(_earfcn); return GetCmccBandByFreDl(frequency); } ///
/// 根据中移动频段划分,获取具体子频段 /// 这里需要注意连续子频段之间有重叠,实际重叠部分不应该规划为中心频点 /// ///
物理频率 ///
子频段
public static string GetCmccBandByFreDl(double _frequency) { string result = "other"; if (_frequency > 2575 && _frequency < 2595) result = "D1"; else if (_frequency > 2594.8 && _frequency < 2614.8) result = "D2"; else if (_frequency > 2614.6 && _frequency < 2634.6) result = "D3"; else if (_frequency > 2320 && _frequency < 2340) result = "E1"; else if (_frequency > 2339.8 && _frequency < 2359.8) result = "E2"; else if (_frequency > 2359.2 && _frequency < 2369.2) result = "E3"; else if (_frequency > 1885 && _frequency < 1905) result = "F1"; else if (_frequency > 1904.4 && _frequency < 1914.4) result = "F2"; return result; } #endregion 中移动相关 }}

转载于:https://www.cnblogs.com/yanweitao/p/7423179.html

你可能感兴趣的文章
CentOS Docker 安装
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
MySQL innert join、left join、right join等理解
查看>>
sdc时序约束
查看>>
NoC片上网络
查看>>
开源SoC整理
查看>>
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(三) 构建镜像
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>