NR LTE UMTS GSM CDMA TDS频点频率换算工具
生活随笔
收集整理的這篇文章主要介紹了
NR LTE UMTS GSM CDMA TDS频点频率换算工具
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 頻點頻率對應關系/// <summary>/// 下行頻率頻點對應關系,36141-e10/// </summary>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 };/// <summary>/// 上行頻率頻點對應關系,36141-e10/// </summary>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 通過頻率獲取其他信息/// <summary>/// 一次返回下行band 頻率初始值 頻點初始值,使用時需要注意返回值為ArrayList/// </summary>/// <param name="strearfcn">下行頻率</param>/// <returns></returns>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;}/// <summary>/// 一次性返回上行band 頻率初始值 頻點初始值,使用時需要注意返回值為ArrayList/// </summary>/// <param name="strearfcn">上行頻點</param>/// <returns></returns>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;}/// <summary>/// 根據下行頻率計算下行頻點/// </summary>/// <param name="_frequency">下行頻率</param>/// <returns></returns>public static int[] GetearfcnDl(double _frequency){ArrayList list = dlfrequencyToBandFlowNlow(_frequency);List<Int32> earfcns = new List<int>();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();}/// <summary>/// 根據上行頻率計算上行頻點/// </summary>/// <param name="_frequency">上行頻率</param>/// <returns></returns>public static int[] GetearfcnUl(double _frequency){ArrayList list = ulfrequencyToBandFlowNlow(_frequency);List<Int32> earfcns = new List<int>();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();}/// <summary>/// 根據下行頻率計算Band/// </summary>/// <param name="_frequency"></param>/// <returns></returns>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));}/// <summary>/// 根據上行頻率計算Band/// </summary>/// <param name="_frequency"></param>/// <returns></returns>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 通過頻點獲取其他信息/// <summary>/// 一次返回下行band 頻率初始值 頻點初始值,使用時需要注意返回值為數組[band,起始頻率,起始頻點]/// </summary>/// <param name="strearfcn">下行頻點</param>/// <returns></returns>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;}/// <summary>/// 一次性返回上行band 頻率初始值 頻點初始值,使用時需要注意返回值為數組[band,起始頻率,起始頻點]/// </summary>/// <param name="strearfcn">上行頻點</param>/// <returns></returns>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;}/// <summary>/// 根據下行頻點獲取物理頻率/// </summary>/// <param name="_earfcn">LTE下行頻點</param>/// <returns></returns>public static double GetFreDl(int _earfcn){double[] list = dlearfcnToBandFlowNlow(_earfcn);double frequency = list[1] + (_earfcn - list[2]) / 10;return frequency;}/// <summary>/// 根據上行頻點獲取物理頻率/// </summary>/// <param name="_earfcn">LTE上行頻點</param>/// <returns></returns>public static double GetFreUl(int _earfcn){double[] list = ulearfcnToBandFlowNlow(_earfcn);double frequency = list[1] + (_earfcn - list[2]) / 10;return frequency;}/// <summary>/// 根據下行頻點獲取Band/// </summary>/// <param name="_earfcn">LTE下行頻點</param>/// <returns></returns>public static int GetBandByDlearfcn(int _earfcn){double[] list = dlearfcnToBandFlowNlow(_earfcn);return (int)list[0];}/// <summary>/// 根據上行頻點獲取Band/// </summary>/// <param name="_earfcn">LTE上行頻點</param>/// <returns></returns>public static int GetBandByUlearfcn(int _earfcn){double[] list = ulearfcnToBandFlowNlow(_earfcn);return (int)list[0];}#endregion 通過頻點獲取其他信息#region 中移動相關/// <summary>/// 根據下行頻點獲取中移動規范子頻段/// </summary>/// <param name="_earfcn">LTE下行中心頻點</param>/// <returns></returns>public static string GetCmccBandByErcfcn(int _earfcn){double frequency = GetFreDl(_earfcn);return GetCmccBandByFreDl(frequency);}/// <summary>/// 根據中移動頻段劃分,獲取具體子頻段/// 這里需要注意連續子頻段之間有重疊,實際重疊部分不應該規劃為中心頻點/// </summary>/// <param name="_frequency">物理頻率</param>/// <returns>子頻段</returns>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
總結
以上是生活随笔為你收集整理的NR LTE UMTS GSM CDMA TDS频点频率换算工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EFRCN对应频段号
- 下一篇: 5G LTE窄带物联网(NB-IoT)