精华内容
下载资源
问答
  • qrcode生成二维码在很多游戏应用被广泛使用,白鹭里可以直接使用,如果是其他引擎,只需要修改qrcode.draw()方法即可实现,简单,游戏应用内动态生成二维码超级方便
  • ts文件合成器(Python)

    2019-02-22 17:56:03
    可以合成类似(1.ts 2.ts ... 10.ts 11.ts 100.ts ...)的ts文件,根据提示输入第一个文件和最后一个文件的序号(注意,是序号不是文件名),即可生成完整的ts文件,代码很短,可以根据需要继续开发,欢迎交流[/斜眼笑]
  • 使用python将ts文件格式化为excel文件,使用方法,将需要操作的ts文件改名为en2zh.ts,置于exe同级目录下,执行exe即可,输出文件为en2zh.xlsx。 ****** 注:如有定制化处理需求,或者任何相关问题可通过邮箱联系...
  • ts_practice:ts练习-源码

    2021-03-22 16:11:43
    如果希望直接在vscode中运行ts需要安装Code Runner插件然后又执行npm install ts-node -g并安装ts-node即可 一般使用ts插件或babel来解析ts 使用汇总处理 执行命令npm install rollup typescript rollup-plugin-...
  • 批量 按照M3U8 最多50线程 下载TS文件。 1.网页打开视频后 按F12 找到M3U8文件 下载到本地。 2.找到一个*.ts文件的真实路径, 如 http://1.1.1.1/a/b/c/001.ts 和 http://1.1.1.1/a/b/c/002.ts 则 ...
  • Sugeno型(TS型)模糊推理系统及自适应神经网络的模糊推理系统(anfis)应用Sugeno(TS)型模糊推理系统线性形式1.输出函数f(x1,x2,…)的两种形式2.计算系统输出U的两种方法自适应神经网络的模糊推理系统(anfis...

    Sugeno(TS)型模糊推理系统线性形式

    TS系统特点:输出量是输入量的线性函数,与Mamdani控制器的最大不同是没有清晰化模块,因为它的推理结果就是清晰值。同时,用清晰地输出函数uj=pje+qjec+kj代替了Mamdani控制器中的模糊蕴含关系。设系统的两个输入分别是清晰变量x1和x2,将近似推理过程指定为“If x1 is A1 and x2 is A2, then u=f(x1, x2)”,其中A1和A2是两个F集合,输出量u为一个数值函数f(x1,x2),且类型为线性函数。

    1.输出函数f(x1,x2,…)的两种形式

    举例:设某个双输入-单输出系统,其两个清晰输入变量为e和ec,一个清晰输出量为u,已知A1和A2为F子集。
    在0阶T-S型模糊模型中:
    If e is A1 and A2 then u=k(k为常数)
    在1阶T-S型模糊模型中:
    If e is A1 and A2 then u=pe+qec+k
    其中p、q和k是与F集合A1、A2有关的常数。

    2.计算系统输出U的两种方法

    假设系统可用n条模糊规则描述,第i条模糊规则的输出为ui。当某个输入激活了m条规则(n≥m),系统总输出为U,将根据这m个输出ui通过下属两种方法计算得出:

    1. 加权求和法(wtsum)
      设第i条规则输出的结果为ui,它的权重为ωi,则总输出为:
      在这里插入图片描述
      式中ωi表示第i条规则在总输出中所占分量轻重的比例(权重)。
    2. 加权平均法(wtaver)
      在这里插入图片描述

    自适应神经网络的模糊推理系统(anfis)

    1.模型特点

    1. 单输出Sugeno型模糊推理系统(Matlab中);
    2. 训练完成的模型不具备可解释性。
      在Matlab中训练anifs有两种方式:命令行和图形界面。在此介绍图形界面的训练方式。

    2.使用MATLAB训练过程

    1. Matlab界面中->APP->搜索fuzzy->打开Neuro-Fuzzy Designer; 在这里插入图片描述
    2. Load Data
      a) 首先准备数据,我们需要准备Training Data和Checking Data,数据加载有两种加载方式:从文件和从工作区。
      b) 我们在Matlab工作区中准备好需要的数据;
      在这里插入图片描述
      分别是train_beta和check_beta,由于设计的是9输入1输出系统,可以看出两者均为749*10矩阵。前9列为输入数据,第10列为输出数据。
      c) 我们在Load data窗口Type选择Training,From选择worksp.,之后输入变量名称,即可加载Training Data,同理完成Checking数据的加载;
    3. 加载或生成FIS模型
      a) 如果加载已有模型,已有模型需要满足的条件为单输出Sugeno型模型,且规则数等于输出情况数目;
      在这里插入图片描述
      b) 如果需要生成模型,可以选择两种方式:Grid partition(网格分割法)和Sub. Clustering(相减聚类法)
      在这里插入图片描述
    4. 训练模型
      a) 在训练时可以选择的方式有:hybrid(混合法)和Backpropa(反向传播法),推荐使用反向传播法;
      b) 设置Error Tolerance(误差精度)和Epochs(最大训练次数);
      c) 开始训练
    5. 模型测试
      a) 使用Checking Data对训练完成的模型进行检查。

    参考文献

    1. MATLAB-Train Adaptive Neuro-Fuzzy Inference Systems.
    2. 石辛民, 郝整清. 模糊控制及其MATLAB仿真[M]. 清华大学出版社, 2008.
    展开全文
  • 批量 按照M3U8 最多50线程 下载TS文件。 1.网页打开视频后 按F12 找到M3U8文件 下载到本地。 2.找到一个*.ts文件的真实路径, 如 http://1.1.1.1/a/b/c/001.ts 和 http://1.1.1.1/a/b/c/002.ts 则 ...
  • 此插件修补了以启用.ts文件的直接import ,而无需在其间进行额外的构建/发布步骤。 这对于在业务逻辑/实用程序提取到其自己的程序包中。 就像 ,但用于常规npm软件包。 安装 对于应用程序: ember install ember-...
  • 大部分播放器都可以直接播放ts文件,所以不需要再进行转码即可使用。 使用方法:将.bat文件放入到对应文件的目录中,运行第一个.bat后继续回弹出排列好的名字,在所有名字按住shift在最后加号前鼠标左键点击后复制;...
  • TS628升级固件

    2017-03-01 10:58:59
    TS628升级固件(OpenWRT),官方提供的升级固件,可用于升级或修复拓实TS628/528路由器,稀缺资料!理论上适合MT7260方案的其它路由升级使用。注意:修复路由,请先刷OpenWRT,在openwrt系统内选择升级包升级即可
  • 通过发布发布一个TS流,然后通过Feed方法填入TS数据即可 通过PublishDir可以读取服务器上文件夹内的所有ts文件进行发布 通过UI界面操作,点击TS文件夹,可以将文件夹中的TS文件逐个进行发布,文件夹路径就是房间名 ...
  • 以前 vue2 的时候最简单的做法是写出来一个页面的逻辑,然后直接 copy 到各个页面中,修改 API 及参数即可。高级一点的是利用 mixin 函数,将可复用逻辑抽离,每个页面引入 mixin。 vue3 之后新增了composition API...
  • ts-axios:ts-axios-源码

    2021-04-12 18:18:26
    只需保留这些文件的名称相同即可。 特征 调零。 运行npm install后,将为您npm install东西 :winking_face: 和多个优化捆绑包的 使用测试,报道和交互式观看模式 和TSLint可实现代码格式设置和一致性 使用TypeD
  • 相信9月18日尤大大的关于Vue3.0的发表演讲大家一定有所关注,现在Vue3.0 也...大家根据自己电脑的配置选择适配的 LTS(最新稳定版本 进行下载,安装即可,此处略去安装步骤。  2.卸载旧版本 如果你现在正在用旧版的 V
  • 只需保留这些文件的名称相同即可。 特征 调零。 运行npm install后,将为您npm install东西 :winking_face: 和多个优化捆绑包的 使用测试,报道和交互式观看模式 和实现代码格式设置和一致性 使用自动将文档生成并...
  • TS基础

    万次阅读 2019-06-26 17:32:58
    TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可 即使没有显式的定义类型,也能够自动做出类型推论 可以定义从简单到复杂的几乎一切类型 即使 TypeScript 编译报错,也可以生成 ...

    1 写在开始之前,为什么要学习TS

    vue2.x中的组件是通过声明的方式传入一系列option,和TypeScript的结合需要通过一些装饰器的方式来做,虽然能实现功能,但是比较麻烦。
    而3.0修改了组件的声明方式,改成了类式的写法,这样使得和TypeScript的结合变得很容易。
    此外,vue的源码也改用了TypeScript来写。其实当代码的功能复杂之后,必须有一个静态类型系统来做一些辅助管理,如React使用的Flow,Angular使用的TypeScript。现在vue3.0也全面改用TypeScript来重写了,更是使得对外暴露的api更容易结合TypeScript。静态类型系统对于复杂代码的维护确实很有必要。
    因此,我觉得TS对于前端从业者也是一个必须的基本技能。
    幸运的是学习过java、c++等静态语言,对于TS引入的一些概念不至于晦涩难解。
    本篇文章总结TS的基础部分。

    2 什么是TS

    TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持,它由 Microsoft 开发,代码开源于 GitHub 上。它可以编译成纯 JavaScript。编译出来的 JavaScript 可以运行在任何浏览器上。TypeScript 编译工具可以运行在任何服务器和任何系统上。TypeScript 是开源的。
    它的第一个版本发布于 2012 年 10 月,经历了多次更新后,现在已成为前端社区中不可忽视的力量,不仅在 Microsoft 内部得到广泛运用,而且 Angular2、Vue3 也都使用了 TypeScript 作为开发语言。

    3 TS优缺点

    优点:

    1. TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可
    2. 即使没有显式的定义类型,也能够自动做出类型推论
    3. 可以定义从简单到复杂的几乎一切类型
    4. 即使 TypeScript 编译报错,也可以生成 JavaScript 文件
    5. 兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取
    6. 类型系统增加了代码的可读性和可维护性
    7. 拥有活跃的社区,并且支持ES6规范

    不足:

    1. 对没有接触过静态语言的同学有一定的学习成本,需要理解接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等概念
    2. 短期可能会增加一些开发成本,毕竟要多写一些类型的定义,不过对于一个需要长期维护的项目,TypeScript 能够减少其维护成本
    3. 集成到构建流程需要一些工作量
    4. 可能和一些库结合的不是很完美

    安装使用

    TypeScript 的命令行工具安装方法如下:
    npm install -g typescript
    以上命令会在全局环境下安装 tsc 命令,安装完成之后,我们就可以在任何地方执行 tsc 命令了。

    编译一个 TypeScript 文件:tsc hello.ts
    此时会生成一个编译好的文件 hello.js,TypeScript 只会进行静态检查,如果发现有错误,编译的时候就会报错(仍然会生成js文件)。

    4 基础

    JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。
    原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol。

    布尔值:

    使用 boolean 定义布尔值类型:let isDone: boolean = false;

    注意:构造函数 Boolean 创造的对象不是布尔值:而是一个 Boolean 对象:

    let createdByNewBoolean: boolean = new Boolean(1);
    // index.ts(1,5): error TS2322: Type 'Boolean' is not assignable to type 'boolean'.
    

    let createdByNewBoolean: Boolean = new Boolean(1); //无错误

    直接调用 Boolean 也可以返回一个 boolean 类型:
    let createdByBoolean: boolean = Boolean(1); //无错误

    在 TypeScript 中,boolean 是 JavaScript 中的基本类型,而 Boolean 是 JavaScript 中的构造函数。其他基本类型(除了 null 和 undefined)一样。

    数值:

    使用 number 定义数值类型
    注意:ES6的进制表示法都会被TS编译为10进制,非ES6进制按原进制编译。

    let decLiteral: number = 6;
    let hexLiteral: number = 0xf00d;
    let binaryLiteral: number = 0b1010;     // ES6 中的二进制表示法
    let octalLiteral: number = 0o744;       // ES6 中的八进制表示法
    let notANumber: number = NaN;
    let infinityNumber: number = Infinity;
    

    编译后:

    var decLiteral = 6;
    var hexLiteral = 0xf00d;
    var binaryLiteral = 10;     // ES6 中的二进制表示法
    var octalLiteral = 484;     // ES6 中的八进制表示法
    var notANumber = NaN;
    var infinityNumber = Infinity;
    

    字符串:

    使用 string 定义字符串类型:
    let myName: string = 'tan';
    编译后:let myName = "tan";

    空值:

    JS 没有空值(Void)的概念,在 TS 中,可以用 void 表示没有任何返回值的函数:

    function alertName(): void {
        alert('My name is tan');
    }
    

    void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null:let unusable: void = undefined;

    Null 和 Undefined:

    在 TS 中,可以使用 null 和 undefined 来定义这两个原始数据类型:

    let u: undefined = undefined;
    let n: null = null;
    

    undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为 null。
    但undefined 和 null 是所有类型的子类型。就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
    let num: number = undefined;
    注意:void 类型的变量不能赋值给 number 类型的变量。

    任意值:

    任意值(Any)用来表示允许赋值为任意类型,因此可以赋值为不同类型的值:

    let myFavoriteNumber: any = 'seven';
    myFavoriteNumber = 7;
    

    任意值上访问任何属性都是允许的,也允许调用任何方法。
    声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
    并且,变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

    let something;
    something = 'seven';
    something = 7;
    
    展开全文
  • CameraMoveScript.ts

    2019-08-27 22:59:37
    Layabox3d摄像机操作类,直接导入 CameraMoveScript.ts后,挂在摄像机上即可使用
  • 只需保留这些文件的名称相同即可。 特征 调零。 运行npm install后,将为您npm install东西 :winking_face: 和多个优化捆绑包的 使用测试,报道和交互式观看模式 和实现代码格式化和一致性 使用自动将文档生成并...
  • 使用方法:将 ts所有分段文件、m3u8文件和本程序放于同一目录下,m3u8文件名必须是local.m3u8,然后运行程序即可得到完整的ts文件index.ts 注意事项:1. 如果出现莫名其妙的错误,则可能是文件路径有中文,改为英文...
  • 软件Ts4(易木雨).rar

    2019-12-31 10:38:37
    ts4.1字库生成,输入想要生成的字体,即可生成字库,并且下载到flash内 必备字库生成软件,本版本是注册版本,分享给大家一起使用。
  • 你的本地环境需要安装 ,根据系统版本选择版本下载即可,无需配置系统环境变量 安装 安装依赖。 $ npm install 如果网络状况不佳,可以使用 进行加速。 $ npm run start 技术栈: 一个开发框架,目前包含打包工具 + ...
  • 简单性:只需克隆即可安装并开始 强大:借助打字稿+泊坞窗+节点,您几乎可以完成所有操作 对于所有人:如果您的计算机上没有节点和mongo,则可以运行docker 文献资料 这里有一些有用的链接来开始这个样板 如何开始...
  • MATLAB数字信号处理(2)LFM脉冲雷达回波处理仿真

    万次阅读 多人点赞 2019-03-13 15:41:24
    MATLAB代码如下(fir.mat放不上来,按照文中参数使用FDATOOL工具设计导出即可): % written by 刘奇 clc; clear; close all; f = 10000000; %10MHz fs = 100e6; ts = 1 / fs; B = 10^7; T = 10^(-5); u = B / T...

    将上学期的“气象雷达原理与系统”课程报告放到blog上。


    摘要

    线性调频(LFM)信号是应用广泛的一种波形,主要优点是脉冲压缩的形状和信噪比对多普勒频移不敏感,即在目标速度未知的情况下,用匹配滤波器仍可以实现回波信号的脉冲压缩,这将大大有利于雷达对目标的探测和信号处理效率的提高。本设计实现了对线性调频(LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息,实验效果良好。


    Abstract

    The linear frequency modulation (LFM) signal is a widely used waveform. The main advantage is that the shape and signal-to-noise ratio of pulse compression are not sensitive to Doppler shift. That is, if the target speed is unknown, the matched filter is still used. Pulse compression of the echo signal can be achieved, which will greatly benefit the radar’s detection of the target and the improvement of signal processing efficiency. This design realizes the simulation of the working principle of linear frequency modulation (LFM) pulse compression radar. In the MATLAB platform, a superimposed chirp echo signal is simulated, and the signal is sampled, demodulated, filtered and compressed, and the distance information of the measured object is extracted. The experimental results are good.


    1、引言

    1.1 作用距离和距离分辨力

    作用距离和距离分辨力是雷达最重要的两个技术指标。作用距离取决于发射信号的能量,发射信号的能量又与发射脉冲的功率和发射时间(即脉冲宽度)成正比。前者受发射管峰值功率和传输线功率损耗等的限制,成本高且调节范围有限。因此,在发射机峰值功率受限的情况下,只能通过增加脉冲宽度的方法来增加信号能量以增大雷达的作用距离。

    雷达的距离分辨力取决于发射信号带宽,带宽越大,距离分辨力越好。传统脉冲雷达发射的是单频信号,脉冲宽度越窄,信号带宽就越宽,距离分辨率就越好。然而发射窄脉冲必然导致平均功率下降,进而减小雷达的作用距离。因此,传统的脉冲雷达中,增大作用距离和提高雷达的分辨力之间存在矛盾。

    为了兼顾雷达的作用距离和距离分辨力,发射信号应同时具备大时宽和大带宽的特点,为此,研究人员利用复杂波形来替代传统的单频脉冲信号。在发射端调制信号的频率或相位以增大信号的带宽,并发射大时宽的信号以保证作用距离。在接收端通过匹配滤波器,将接收到的宽脉冲信号进行脉冲压缩得到窄脉冲信号,提高距离分辨率,从而兼顾了作用距离和距离分辨力。这是雷达隐蔽、抗干扰、区分多目标的重要手段。研究最早且应用最广泛的复杂波形便是线性调频信号。

    1.2 线性调频信号

    雷达波形设计中,采用线性调频信号的优势在于信号产生方便,同时当目标回波存在多普勒频移时脉压结果变化较小,缺点是经过脉压处理后副瓣较高,固定为13.6dB,虽然可以通过加窗的方法对其进行抑制,但同时对信号的其他特性也会带来损失,另外在时宽带宽积小于20时,主瓣副瓣比会变小,导致性能恶化。

    线性调频信号的产生方法在早期雷达中使用的是通过全通移相网络、压控振荡器或色散延迟线的方法,后来采用声表面波器件通过模拟手段形成。而新一代雷达一般则使用DDS技术直接合成。脉冲压缩处理方法在现代雷达中一般采用数字方式进行。有两类方式,一类是在频域上进行处理,将零中频回波信号进行快速傅里叶变换然后与发射信号的频谱相乘,然后再进行逆傅里叶变换得出结果;另一类是时域处理法,将零中频信号与回波信号进行卷积直接得出结果。

    早期,由于FPGA硬件水平较低,无法进行大量的乘法并行运算,所以主要使用DSP以第一类方法为主。目前随着FPGA的设计制造工艺水平逐步提高,使用FPGA来实现各种雷达信号处理算法乃至整个雷达信号处理系统成为了一种数字信号处理的发展趋势。
    本文设计实现了对线性调频(LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息。


    2、原理分析

    2.1 LFM 脉冲雷达原理分析

    雷达是利用无线电波来检测目标并测定目标的有无、目标斜距、目标角位置、目标相对速度等的装置。雷达发射机的任务是产生符合要求的雷达波形,然后经馈线和收发开关由发射天线辐射出去,遇到目标后,电磁波一部分反射,经接收天线和收发开关由接收机接收,对雷达回波信号做适当的处理就可以获知目标的相关信息。

    假设目标与雷达的相对距离为 R,雷达发射信号s(t) ,传播速度为光速C ,则经过时间R/C后电磁波到达目标,照射到目标上的电磁波可写成:s(t-R/C)。电磁波与目标相互作用,一部分电磁波被目标散射,被反射的电磁波为σ·s(t-R/C),其中σ为目标的雷达散射截面(RCS)。再经过时间R/C后,被雷达接收天线接收的信号为σ·s(t-2 R/C)。
    在这里插入图片描述

    图 2.1 雷达等效于 LTI 系统

    如果将雷达天线和目标看作一个系统,便得到如图 2.1 的等效,而且这是一个 LTI(线性时不变)系统。

    等效 LTI 系统的冲激响应可写成:

    █(h(t)=∑_(i=1)^M▒σ_i  δ(t-τ_i )#(2.1) )
    M 表示目标的个数,σ_i是目标散射特性,τ_i是光速在雷达与目标之间往返一次的时间:
    在这里插入图片描述
    式中, Ri 为第 i 个目标与雷达的相对距离。雷达发射信号 s(t) 经过该 LTI 系统,得输出信号(即雷达的回波信号)sr (t) :
    在这里插入图片描述
    从雷达回波信号sr (t)提取出表征目标特性的τ_i(表征相对距离)的常用方法如图2.2所示。
    在这里插入图片描述

    图 2.2 雷达回波信号处理

    以上便是线性调频(LFM)脉冲压缩雷达的工作原理。

    2.2数字下变频原理分析

    本设计中可以选用降低采样率来实现数字下变频的目的,原理如图2.3所示。
    在这里插入图片描述

    图 2.3 降低采样率实现数字下变频

    如果原信号采样率为f,则经过n点重采样处理后,采样频率变为f/n。

    2.3脉冲压缩原理分析

    脉冲压缩相当于让 sr(t) 通过雷达发射信号s(t)的匹配滤波器。s(t)的匹配滤波器hr (t)为:
    在这里插入图片描述
    于是进行滤波处理有:
    在这里插入图片描述
    对上式进行傅立叶变换:
    在这里插入图片描述
    如果选取合适的s(t),使它的幅频特性|S(jω)|为常数,那么2.6式可写为:
    在这里插入图片描述
    其傅立叶反变换为:
    在这里插入图片描述
    so (t)中包含目标的特征信息τi和σi。从so(t)中可以得到目标的个数M和每个目标相对雷达的距离:
    在这里插入图片描述
    实现脉冲压缩的方式有两种,一种是直接在时域卷积(滤波)法,另一种是在频域中进行处理,如图 2.4 所示。
    在这里插入图片描述

    图 2.4 频域脉冲压缩处理

    3、详细设计

    3.1 线性调频信号回波产生模块

    表3.1 关键系统参数
    参数含义
    f调频信号基础频率 10MHz
    fs采样频率 100MHz
    ts采样周期 1/fs
    B调频范围 10MHz
    T脉冲宽度 10μs
    c信号传播速度 3×108m/s
    PRT脉冲周期 500μs

    本系统中使用到的关键系统参数如表3.1所示。基于上述参数,本系统中使用的线性调频信号为:
    在这里插入图片描述
    本系统假设该线性调频信号检测到三个目标,距离分别为 10km,30km和31km。本模块使用到的主要信号如表3.2所示。

    表 3.2 回波信号生成模块信号
    信号含义
    y基础线性调频信号
    y110km 处的回波信号
    y230km 处的回波信号
    y331km 处的回波信号
    xt叠加后的回波信号

    线性调频信号回波产生模块的程序设计流程图如图3.1所示。
    在这里插入图片描述

    图3.1 LFM信号回波产生模块程序流程图

    程序设计时先计算出三个距离所对应的传播时间,然后根据时间计算出其对应的序列长度,建立三个子信号分别作为三个距离上的回波信号。之后再设计一个 10μs 的 LFM 信号。每一个回波信号由传播时间、10μs的LFM信号、补零三部分组成,总时长为 PRT。最后将三个回波信号叠加起来。

    3.2 回波信号采样解调模块

    该模块使用一个基础频率的信号进行解调:
    在这里插入图片描述
    本模块使用到的主要信号如表3.3所示。

    表3.3 回波信号采样解调模块信号
    信号含义
    xtLFM 叠加的回波信号
    yf相干载波信号
    xrt解调后的信号

    相干解调的过程只需要让 xt 和 yf 相乘即可,相乘结果即为解调出来的雷达信号。

    3.3 滤波抽取模块

    解调后的信号xrt中包含有两信号相乘的和频信号和差频信号,本模块滤除掉和频信号分量,之后对滤波后的信号重采样,以降低采样率达到数字下变频的目的。本模块使用到的主要信号如表 3.4 所示。

    表3.4 滤波抽取模块信号
    信号含义
    xrt解调后的信号
    firxrt滤波后的信号
    xrtdown数字下变频处理后的信号

    滤波抽取模块的程序设计流程图如图3.2所示。
    在这里插入图片描述

    图 3.2 滤波抽取模块程序流程图

    由于回波信号为10-20MHz,与10MHz的相干信号相乘,结果频谱应该包含 0-10MHz和20-30MHz两个频段,因此使用fdatool设计一个低通滤波器滤除掉20~30MHz的信号。滤波器通带频率15MHz,阻带频率18MHz,通带衰减1dB,阻带衰减1dB,将系数导出到工作空间供滤波处理调用。

    对滤波后的信号使用downsample函数进行4位的抽取,则抽取后的信号采样频率变为100Mhz/4=25MHz。

    3.4 脉冲压缩模块

    表3.5 脉冲压缩模块信号
    信号含义
    xrtdown数字下变频处理后的信号
    hdt匹配滤波信号
    out脉冲压缩处理后的信号

    脉冲压缩模块让下变频后的回波信号通过发射信号的匹配滤波器,提取出每个目标回波的距离信息。脉冲压缩有时域法和频域法两种。本模块使用到的主要信号如表3.5所示。匹配滤波信号hdt如公式3.3所示。
    在这里插入图片描述
    匹配滤波信号中的f0为0Hz。时域法进行脉冲压缩使用hdt与xrtdown直接进行卷积即可。频域法进行脉冲压缩按照图2.4中的原理框图处理。


    4、仿真分析

    4.1 回波产生模块仿真分析

    绘制出雷达回波信号的时域图与频域图,结果如图4.1所示。
    在这里插入图片描述

    图 4.1 雷达回波信号时域与频域

    时域中可以看到在10km、30km、31km处看到三个脉冲波形,其中在30km和 31km的交界处发生了信号叠加。频域中信号的频率范围在10MHz至20MHz间线性分布,符合预期设定。

    4.2 采样解调模块仿真分析

    在这里插入图片描述

    图 4.2 解调后信号时域图和频域图

    绘制出解调,即相乘后的信号时域和频域图,如图4.2所示。时域中可以仍然保留了10km、30km、31km处的三个脉冲波形信息。由于回波信号为10~20MHz,与10MHz的相干信号相乘,结果频谱应该包含0-10MHz和20-30MHz两个频段,因此该模块设计符合预期设定。

    4.3 滤波抽取模块仿真分析

    绘制对解调信号滤波后的信号频域如图4.3所示。
    在这里插入图片描述

    图 4.3 解调信号滤波后频域图

    经过低通滤波后,解调信号中的 20~30MHz 频段被滤除,只留下 0~10MHz频段信号。对该信号抽取后绘制频域如图4.4所示。
    在这里插入图片描述

    图4.4 抽取后信号频域图

    抽取后信号仍保留了0~10MHz的信号信息,但采样频率由100MHz降至25MHz,图4.3中最大频率为100MHz/2=50MHz,图4.4中最大频率为25MHz/2=12.5MHz,表明该模块设计符合预期设定。

    4.4 脉冲压缩模块仿真分析

    脉冲压缩处理后绘制信号的时域图如图4.5所示。
    在这里插入图片描述

    图 4.5 脉冲压缩后信号时域图

    原来每个距离的回波信号脉宽为10μs,经过脉冲压缩后,每个脉冲变为10μs/100=0.1μs。从图4.5中可以清楚的看到在10km、30km、31km处各有一个很窄的脉冲。脉冲压缩处理的能力也决定了雷达信号处理系统的距离分辨力大小, 压缩后脉冲越窄,距离分辨力越大。


    5、结束语

    本设计实现了对线性调频( LFM)脉冲压缩雷达的工作原理仿真,在MATLAB 平台中模拟一个叠加的线性调频回波信号,对该信号分别进行采样解调、滤波抽取、脉冲压缩,提取出其中包含的测量物体的距离信息,实验效果良好。

    脉冲压缩的原理就是使用一个发射信号与接收回波进行相关,可以将较宽的回波信号“压缩”成很窄的信号。压缩后的脉冲宽度决定了可以分辨的最小距离。例如两个目标的回波信号重叠在一起,在回波信号中无法直接分辨出两个目标的位置,未进行脉冲压缩的雷达距离分辨力 ΔR=(cτ)/2=c/(2B)。这种体制的雷达要提高距离分辨率必须减小脉冲宽度,脉宽减少会降低平均发射功率,使用线性调频信号进行脉冲压缩可以实现提高距离分辨率而保持平均发射功率。脉冲压缩后的距离分辨力 ΔR=(cτ’)/2<<(cτ)/2。


    MATLAB代码如下(fir.mat放不上来,按照文中参数使用FDATOOL工具设计导出即可):

    % written by 刘奇
    
    clc;
    clear;
    close all;
    
    f = 10000000;         %10MHz
    fs = 100e6;
    ts = 1 / fs;
    B = 10^7;
    T = 10^(-5);
    u = B / T;
    c = 3e8;
    PRT = 500e-6;
    
    
    r1 = 10000;   tao1 = 2*r1/c;  n1 = round(tao1 / ts);
    r2 = 30000;  tao2 = 2*r2/c;  n2 = round(tao2 / ts);
    r3 = 31000;  tao3 = 2*r3/c;  n3 = round(tao3 / ts);
    NN = PRT / ts;
    
    t1 = 0 : ts : T-ts;
    y = sin(2*pi*(f*t1+0.5*u*t1.^2));
    N = length(y);
    
    
    y1 = [zeros(1, n1), y, zeros(1, NN-n1-N)];
    y2 = [zeros(1, n2), y, zeros(1, NN-n2-N)];
    y3 = [zeros(1, n3), y, zeros(1, NN-n3-N)];
    xt = y1+y2+y3;
    figure;
    subplot(2, 1, 1);
    plot((0:length(xt)-1)*ts*c/2/1000, xt);
    xlabel('距离/km');
    xtfft = abs(fft(xt, 50000));
    subplot(2, 1, 2);
    fx=(0:length(xt)/2-1)*fs/length(xt);
    plot(fx/1e6, xtfft(1:length(xt)/2));
    xlabel('频率/MHz');
    
    % 对回波信号采样
    fs1 = 100e6;
    ts1 = 1/fs1;
    t2 = 0 : ts1 : (length(xt)-1)*ts1;
    xrt = xt .* sin(2*pi*f*t2);
    
    fx1=(0:length(xt)/2-1)*fs1/length(xt);
    figure;
    subplot(2, 1, 1);
    plot((0:length(xt)-1)*ts*c/2/1000, xrt);
    xlabel('距离/km');
    xrtfft = abs(fft(xrt, 50000));
    subplot(2, 1, 2);
    fx1=(0:length(xrt)/2-1)*fs1/length(xrt);
    plot(fx1/1e6, xrtfft(1:length(xrt)/2));
    xlabel('频率/MHz');
    
    load fir.mat
    firxrt = filter(Num, 1,  xrt);
    firfft = abs(fft(firxrt, 50000));
    figure;
    plot(fx1/1e6, firfft(1:length(firxrt)/2));
    xlabel('频率/MHz');
    xrtdown = downsample(firxrt, 4);
     value0=abs(fft(xrtdown));%FFT分析
    figure;
    fx1=(0:length(xrtdown)/2-1)*(fs1/4)/length(xrtdown);
    %plot((fx1(1:length(value0)))/1e6, value0);
    plot( fx1/1e6, value0(1:length(fx1)));
    xlabel('频率/MHz');
    
    T = 10^(-5);
    u = B / T;
    c = 3e8;
    fs = 25e6;
    ts = 1 / fs;
    t1 = 0 : ts : T-ts;
    hdt = sin(2*pi*(0*t1+0.5*u*t1.^2));
    figure;
    plot(hdt);
    
    replica = xrtdown;
    y = fliplr(hdt);
    % out = conv(replica, y);
    replica1= [replica,zeros(1,16384-length(replica))];
    y1 = [hdt,zeros(1,16384-length(hdt))];
    
    rfft = fft(replica1);
    yfft = fft(y1);
    out = abs(ifft((rfft.*conj(yfft))));
    figure;
    t = (0:length(xrtdown)-1)*ts*c/2/1000;
    plot(t, out(1:length(t)));
    xlabel('距离/km');
    
    展开全文
  • 没有固件备份,只需以相同的方式还原为官方固件即可。 怎么玩 按住按钮B开始游戏。 按A或B进行移动,按A + B或按住B进行旋转,按住A进行放下,同时按住两个按钮退出。 每次您输掉游戏时,烙铁头的温度都会升高10...
  • TS文件合并器.rar

    2017-11-29 18:31:06
    该命令的合并排序是按照你系统下的字母序来的,比如你的文件名是disk1.ts, disk2.ts, disk3.ts,那该命令就会按照disk1.ts+disk2.ts+disk3.ts的顺序来合并这三个文件,事实上,绝大多数网上下载的高清文件,都已经按...
  • ts-loader 这是用于 webpack 的 TypeScript 加载器,将 TypeScript 编译成 JavaScript。 ts-loader 在内部是调用了 TypeScript 的官方编译器 – tsc。所以,ts-loader 和 tsc 是共享 tsconfig.json。 安装 yarn add ...

    ts-loader

    这是用于 webpackTypeScript 加载器,将 TypeScript 编译成 JavaScript

    ts-loader 在内部是调用了 TypeScript 的官方编译器 – tsc。所以,ts-loadertsc 是共享 tsconfig.json

    安装

    yarn add ts-loader --dev
    

    or

    npm install ts-loader --save-dev
    

    如果还没有安装 TypeScript,你需要先安装一下:

    yarn add typescript --dev
    

    or

    npm install typescript --save-dev
    

    开始

    正常使用 webpack 即可。

    Options

    有两种类型的 OptionsTypeScript options(也称为 “编译器 options” )和 loader optionsTypeScript options 应该通过 tsconfig.json 文件设置。loader options 可以通过 webpack 配置中的 options 属性指定:

    module.exports = {
      ...
      module: {
        rules: [
          {
            test: /\.tsx?$/,
            use: [
              {
                loader: 'ts-loader',
                options: {
                  transpileOnly: true // 只做语言转换,而不做类型检查
                }
              }
            ]
          }
        ]
      }
    }
    

    transpileOnly 快速构建一个项目。

    • transpileOnly: false
      语言转换 + 类型检查 = 3290 ms

      > webpack --mode production --config ./build/webpack.config.js
      
      clean-webpack-plugin: options.output.path not defined. Plugin disabled...
      asset index.html 327 bytes [emitted]
      asset app.js 89 bytes [emitted] [minimized] (name: main)
      ./src/index.ts 102 bytes [built] [code generated]
      webpack 5.27.2 compiled successfully in 3290 ms
      
    • transpileOnly: true
      only 语言转换 = 598 ms

      > webpack --mode production --config ./build/webpack.config.js
      
      clean-webpack-plugin: options.output.path not defined. Plugin disabled...
      asset index.html 327 bytes [compared for emit]
      asset app.js 89 bytes [compared for emit] [minimized] (name: main)
      ./src/index.ts 102 bytes [built] [code generated]
      webpack 5.27.2 compiled successfully in 598 ms
      
    • transpileOnly: true + fork-ts-checker-webpack-plugin
      transpileOnly: true 配合插件 fork-ts-checker-webpack-plugin,可以补全类型检查的功能。

      npm i fork-ts-checker-webpack-plugin -D
      
      const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
      module.exports = {
        ...
        plugins:[
          ...
          new ForkTsCheckerWebpackPlugin()
        ]
      }
      

      这时,你的项目中有类型错误,编译就会报错。

      编译通过耗时:2289 ms。

      > webpack --mode production --config ./build/webpack.config.js
      
      clean-webpack-plugin: options.output.path not defined. Plugin disabled...
      asset index.html 327 bytes [compared for emit]
      asset app.js 89 bytes [emitted] [minimized] (name: main)
      ./src/index.ts 102 bytes [built] [code generated]
      webpack 5.27.2 compiled successfully in 2289 ms
      

    awesome-typescript-loader

    awesome-typescript-loader 的创建主要是为了加快项目中的编译速度。

    ts-loader的主要区别:

    • 更适合与 Babel 集成,使用 Babel 的转义和缓存。
    • 不需要安装独立的插件,就可以把类型检查放在独立进程中。

    安装

    npm install awesome-typescript-loader --save-dev
    
    module.exports = {
      ...
      module: {
        rules: [
          {
            test: /\.tsx?$/,
            use: [
              {
                loader: 'awesome-typesscript-loader',
                options: {
                  transpileOnly: false
                }
              }
            ]
          }
        ]
      }
    }
    

    跑一下

    • transpileOnly: false

      webpack 5.27.2 compiled successfully in 3392 ms
      
    • transpileOnly: true

      webpack 5.27.2 compiled successfully in 2411 ms
      
      
    • transpileOnly: true + 自带插件 CheckerPlugin

      webpack 5.27.2 compiled successfully in 2529 ms
      

    ts-loader 与 awesome-typescript-loader 编译时间对比

    loader默认配置transpileOnlytranspileObly + 类型检查进程
    ts-loader3200+6002200+
    awesome-typescript-loader3300+2400+2500+ (类型检查有疏漏)

    Babel

    为什么有了 Typescript,还需要 Babel?看一下对比:

    编译能力类型检查插件
    tscts(x),js(x) --> es 3/5/6…
    Babelts(x),js(x) --> es 3/5/6…丰富
    • Babel 7 之前,是不支持 TS 的

      编译流程是这样的:TS > TS 编译器 > JS > Babel > JS (再次)

    • Babel 7

      实现了“只有一个 Javascript 编译器” 的梦想!通过允许 Babel 作为唯一的编译器来工作,就再也没必要利用一些复杂的 Webpack 魔法来管理、配置或者合并两个编译器。

    Babel 是如何处理 TypeScript 的?

    它移除了 TypeScript

    是的,它将 TypeScript 全部转换为常规 JavaScript,然后再一如既往的操作。

    因为 Babel 的优秀的缓存和单文件散发架构,Babel + TypeScript 的组合套餐会提供了更快的编译。这是 Babel 在编译过程中剥离 TypeScript 的第一个优势。

    类型检查 呢?那只在当你准备好的时候进行。这是 Babel 在编译过程中剥离 TypeScript 的第二个优势。

    创建一个 babel 工程

    // package.json
    {
      ...
      // 指定输出文件 dist,指定扩展名 "ts,tsx"
      "scripts": {
        "build": "babel src --out-dir dist --extensions \".ts,.tsx\""
      },
      ...
      "devDependencies": {
        "@babel/cli": "^7.13.16",
        "@babel/core": "^7.13.16",
        "@babel/plugin-proposal-class-properties": "^7.13.0",  // 支持类属性
        "@babel/plugin-proposal-object-rest-spread": "^7.13.8", // 支持剩余扩展操作符
        "@babel/preset-env": "^7.13.15",
        "@babel/preset-typescript": "^7.13.0" // 编译 ts 文件
      }
    }
    
    // .babellrc
    {
      "presets": ["@babel/preset-env", "@babel/preset-typescript"],
      "plugins": [
        "@babel/plugin-proposal-class-properties",
        "@babel/plugin-proposal-object-rest-spread"
      ]
    }
    
    // src/index.ts
    // 类的属性、剩余扩展操作符,正好对应两个插件
    class A {
      a: number = 1;
    }
    
    let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4, c: 5 };
    let obj = { x, y, ...z };
    
    npm run build
    
    > babel src --out-dir dist --extensions ".ts,.tsx"
    
    Successfully compiled 1 file with Babel (632ms).
    

    结合 TypeScript

    此时,只具备编译功能,再安装 Typescript 补全类型检查功能。

    npm i typescript -D
    tsc --init
    
    // tsconfig.json
    {
      ...
      "compilerOptions":{
        "noEmit":true // 不输出文件,只做类型检查
      }
    }
    

    配置一下脚本

    // package.json
    {
      ...
      "script":{
        ...
        "check-type": "tsc --watch"
      }
    }
    

    我们需要新开一个 terminal,跑 npm run check-type,就 ok 。

    有四种语法,有两种语法,Babel 无法编译

    • 常量枚举

      const enum A {
        X,
      }
      
    • 历史遗留风格的 import/export 语法
      import foo = require(...)export = foo

    • namespace 命名空间:
      从 v7.6.0 起,支持 TypeScript 命名空间的编译。

    • 类型断言
      支持 as 方式

    如何选择 TypeScript 编译工具

    • 如果没有使用 Babel,首选 TypeScript 自带编译器(配合 ts-loader 使用)
    • 如果项目中有 Babel,安装 @babel/preset-typescript,配合 tsc 做类型检查。
    • 两种编译器不要混用。

    End.

    展开全文
  • 经常在微信里看到一些人分享的小视频,都是在线网址的形式,不使用手机...TS助手可以在线分析m3u8文件,并下载所有的视频文件,还可以把下载的文件合成为mp4。 ###########输入任意注册码即可跳出真码,重启注册成功
  • 无损M2TS/MTS/TS/TRP剪辑软件:...下载解压后直接运行smart.portable.exe即可,当前版本Smart Cutter 1.3.4,可能大家不太熟悉界面,载入视频后,设定好NEW START POINT和NEW END POINT,然后点击红色的录制按钮就OK了
  • .d.ts和.ts区别_Ts.ED简介

    千次阅读 2020-08-16 04:15:23
    .d.ts和.ts区别Dependency injection (DI), as a form of inversion of control (IOC), is one of the common software design patterns in object-oriented programming (OOP). DI brings a lot of advantages ...
  • ts24.lib压缩文件 解压后即可使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,115
精华内容 25,246
关键字:

ts即可