问题背景

移动通信(Mobilecommunication)是移动体之间的通信,或移动体与固定体之间的通信。

那么在所有业务流程开始前,手机(终端)是如何选择网络的?

这个问题可以分为 信号功率排序滑动相关检测 两个部分来分析。

信号功率排序

  • 首先注意,数字信号处理的往往是复数信号。

a + bi

存储时,不存储i

只存储a、b,也称为IQ

终端在每个地点收到的是多个基站信号的叠加,需要依据强度,判断选择接入那个基站。

  • 信号强度计算实例

序号为n的点,a[n]+b[n]i,其信号强度:

信号强度(N为序列个数):

而正常通信中,不可能把所有信号接收完成之后再计算信号强度,也不可能随便取一段数据计算,而是在一定时间范围内的平均强度。此外这还涉及到对平均强度进行排序的问题。

  • 假设:

待测数据共10组,分别存储在data0.txt-data9.txt中,每个数据中有10000行(实部a与虚部b交替排列,总计各5000行),平均功率排序通过常用的冒泡排序(Bubble Sort)进行。

  • 示例代码(C)如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>char str1[5000] = {0};
char str2[5000] = {0};
double value1;
double value2;
double ap[5000] = {0};
double av[10] = {0};
double sum;
double temp;int main()
{char filename[256] = {0};for(int i=0; i<10; i++){sprintf(filename, "%s%d.txt", "data", i);    //连续开文件FILE *fp = fopen(filename, "rt");for(int j=0; j<5000; j++)                   //每两行读取文件数据(一实一虚){fgets(str1,5000,fp);fgets(str2,5000,fp);value1 = atof(str1);value2 = atof(str2);ap[j] = sqrt(pow(value1,2) + pow(value2,2));  //功率计算sum = sum + ap[j];                            //累加}av[i] = sum/5000;                            //取均值sum = 0;fclose(fp);}for(int i=0;i<10-1;i++)                          //冒泡排序{for(int j=0;j<10-1-i;j++){if(av[j]>av[j+1]){temp=av[j];av[j]=av[j+1];av[j+1]=temp;}}}for(int m=0;m<10;m++)                            //输出结果{printf("%lf\n",av[m]);}return 0;
}

滑动相关检测

相关检测技术是信号检测领域里一种重要工具,常用于从噪声背景中检测出有用的确定性信号。它利用确定性信号在不同时刻的取值一般都具有较强相关性,而干扰噪声因为随机性较强,不同时刻取值相关性较差的特性,把确定性信号和干扰噪声区分开来。

假设确定信号序列为x[m],具有噪声背景的实际信号序列为y[n],m<n,通过滑动相关计算,找出滑动相关计算序列z[k]的最大的值,则可以求出具有噪声背景的实际信号序列y中所包含的确定信号序列x的位置。

滑动相关计算公式为:

  • 假设:

确定信号序列存储于sequence0.txt,共1000行(实部a与虚部b交替排列,总计各500行)。

待测信号序列存储于sequence1.txt,共10000行(实部a与虚部b交替排列,总计各5000行)。

寻求最大相关时采用循环对比的方法。

  • ​​​​​​​示例代码(C)如下:
#include <stdio.h>
#include <stdlib.h>char x1[1000]={0};
char x2[1000]={0};
char y1[5000]={0};
char y2[5000]={0};double xx1;
double xx2;
double yy1;
double yy2;
double value1;
double value2;double x11[1000]={0};
double x22[1000]={0};
double y11[5000]={0};
double y22[5000]={0};
double z[4000]={0};                                //5000-1000=4000int main()
{FILE *fp1 = fopen("sequence0.txt", "rt");      //第一个文件指针(确定信号序列)for(int a=0; a<1000; a++){fgets(x1,1000,fp1);fgets(x2,1000,fp1);xx1 = atof(x1);xx2 = atof(x2);x11[a] = xx1;x22[a] = xx2;}fclose(fp1);FILE *fp2 = fopen("sequence1.txt", "rt");       //第二个文件指针(待测信号序列)for(int y=0; y<5000; y++){fgets(y1,5000,fp2);fgets(y2,5000,fp2);yy1 = atof(y1);yy2 = atof(y2);y11[y] = yy1;y22[y] = yy2;}fclose(fp2);for(int k=0;k<=5000-1000;k++)                  //滑动相关计算{value1 =0;value2 =0;for(int i=0;i<1000;i++){value1 += x11[i]*y11[i+k]-x22[i]*y22[i+k];value2 += x11[i]*y22[i+k]+x22[i]*y11[i+k];}z[k] = sqrt(pow(value1,2) + pow(value2,2));}double max=z[0];int index=0;for(int k=0;k<=5000-1000;k++)                  //寻求最大值及其下标{if(max<z[k]){max=z[k];index=k;}}printf("%lf\n",max);                            //输出结果printf("%d\n",index);return 0;
}

注:

以上对内存的分配方式采用的是对数组的固定定义,可以考虑采用malloc分配空间,算法的灵活度将会更高。​​​​​​​

移动通信中的信号功率排序及滑动相关检测相关推荐

  1. 走进“开源SDR实验室” 一起玩转GNU Radio:信号功率测量

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 温馨提示:"开源SDR实验室"是北京的. 本文介绍GNU Radio中的信号功率测量相关模块. 在开始介绍之前,首先推荐 ...

  2. FPGA:计算滑动求和----信号检测计算信号功率

    FPGA:计算滑动求和----信号检测计算信号功率 在进行简单信号检测过程中,需要计算信号的能量,这时候需要用到滑动求和的计算过程. 这里记录如何利用Verilog编写滑动求和过程. 思路:滑动求和的 ...

  3. GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术...

    GPRS 锁定 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是 ...

  4. CDMA在卫星移动通信中的应用(转)

    摘 要:分析了CDMA技术优势,介绍了卫星移动通信系统发展, 简单描述了我国卫星移动通信系统模型和信道模型,重点探讨了CDMA在卫星移动通信系统多址方式.功率控制和分集接收中的应用. 关键词:CDMA ...

  5. 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )

    文章目录 一.相关函数应用场景 一.相关函数应用场景 求下面信号的 " 自相关函数 " : x(n)=sin⁡(2πfn)+N(n)x(n) = \sin(2\pi fn) + N ...

  6. 【数字信号处理】相关函数 ( 功率信号 | 功率信号的互相关函数 | 功率信号的自相关函数 )

    文章目录 一.功率信号的互相关函数 二.功率信号的自相关函数 信号根据 " 能量 " 可以分为 " 能量信号 " 和 " 功率信号 " ; ...

  7. matlab 信号去直流,基于FIR滤波的ADC采样信号中直流信号的消除方法与流程

    本发明属于卫星导航领域,介绍了ADC采样信号中的直流偏置消除方法. 背景技术: 卫星导航系统在军事和民用领域应用越来越广泛.以GPS卫星导航系统为例,其到地面的信号功率仅为-130dBm,这么微弱的信 ...

  8. RecyclerView拖拽排序和滑动删除实现

    效果图 如何实现 那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除.拖拽的 ...

  9. MATLAB多径衰落信道仿真程序,基于Matlab的移动通信中多径衰落信道的仿真

    移动通信中多径衰落信道的仿真 文章编号:1007-3558(2004)05-0078-04 基于Matlab的移动通信中多径衰落信道的仿真 陈岚,,万国春,,冯志彪2 (1.江西科技师范学院,江西南昌 ...

最新文章

  1. FD.io/VPP — IPSec
  2. 配置kali linux
  3. mongodb内存映射原理
  4. java连接access2013数据库_滴水穿石–Java连接Access数据库及其操作
  5. 通用版!完整代码,单链表SingleLinkedList增删改查,反转,逆序,有效数据等Java实现
  6. 最大流算法(Edmons-Karp + Dinic 比较) + Ford-Fulkson 简要证明
  7. 蓝桥杯 ADV-207 算法提高 最长字符序列
  8. 高级JAVA程序员必备:必看书籍清单
  9. 图像处理(一)图像灰度化的三种方式
  10. 华为笔记本重装系统步骤
  11. 只有程序员才能读懂的三国演义(一)
  12. 金融证券基础(三)----回撤
  13. 程序员常用的16款火爆软件,你get到了哪些软件?
  14. js实现鼠标跟随效果
  15. SQL DML操作之增删改查
  16. Maven的下载和安装【详细】
  17. 优秀IT项目经理的六大特质_转帖IT专家网
  18. cocos入门7:cocos creator 中的ui系统
  19. 网页右下角弹出广告窗口 超简洁
  20. 为什么数据中台如此重要?明略科技吴信东:智能时代企业核心竞争力之源 | MEET2020...

热门文章

  1. html5输入框自动放大镜,HTML5实现放大镜效果
  2. 老鱼Python数据分析——篇三:操作MySQL数据库
  3. jsp中插入图片无法显示
  4. 有容乃大 ——Java集合(List/Set/Map)
  5. 九月十月 阿里 百度 华为 校招笔试题
  6. 奔跑的蜗牛 · 没头的苍蝇
  7. 读书笔记2013第1本:餐巾纸的背面
  8. 普源DP832可编程线性直流电源产品特点
  9. 汇编语言学习:使用masm32寻找1-100中的质数
  10. 【JAVA】-- Java五大常用布局管理器(BorderLayout、FlowLayout、GridLayout、GridBagLayout、CardLayout)