- 博客(308)
- 资源 (6)
- 收藏
- 关注
原创 【20211214】【信号处理】从Matlab仿真的角度理解频谱混叠和奈奎斯特采样定理
采样频率: fs = 100Hz 信号频率:f1=40Hz,f2=60.05Hz一、奈奎斯特采样定理二、栅栏效应三、频谱泄露四、FFT点数选取
2021-12-16 19:10:57
9059
4
原创 【20211214】【信号处理】使用Matlab求解信号的频谱图、幅度谱、相位谱
clear; clc; close all; warning off;fs = 1000;t = 0 : 1/fs : 10;datalength = length(t);s1 = 10 * sin(2 * pi * 50 * t); % 信号1s2 = 3 * sin(2 * pi * 100 * t); % 信号2s3 = 15 * cos(2 * pi * 30 * t); % 信号3s4 = 1 * randn(1, datalength); % 信号4(高斯白噪声)s .
2021-12-14 16:19:30
37158
2
原创 【20211214】【Python】查找数组中最值元素、中值元素及其索引
一、最大值1. 最大值元素 np.max(lis)2. 最大值索引 np.argmax(lis) 或 np.where(lis==np.max(lis))二、最小值1. 最小值元素np.min(lis)2. 最小值索引np.argmin(lis) 或 np.where(lis==np.min(lis))三、中值1. 中值元素np.median(lis)2. 中值索引 ...
2021-12-14 14:25:30
4537
原创 【20211208】【Matlab】使用Matlab中的pca函数实现数据降维,并将数据可视化
1. pca函数使用方法 [coeff, score] = pca(data);(1)输入参数data:待降维的数据集(2)输出参数 coeff:主成分分量,即样本协方差矩阵的特征向量; score:主成分,即样本在低维空间的投影,也就是降维后的数据。注意:score 的维度和原始样本 data 的维度一致,如果想要降到 k 维,只需选取 score 的前 k 列即可~%%clear; clc; close all...
2021-12-08 21:36:12
15766
15
原创 【20211208】【Matlab】使用Matlab中setdiff生成两个数组的差集
1. C = setdiff(A, B)功能:返回 A 中存在但 B 中不存在的数据,不包含重复项。 (参考:setdiff)
2021-12-08 21:25:23
619
原创 【20211208】【Matlab】使用Matlab中randperm生成1~N中无重复元素的M个数
1. p = randperm(n) 功能:生成一个随机排列 1*n 的行向量,元素都是1~n 之间的整数,且该行向量没有重复元素。2. p = randperm(n, m)功能:生成一个随机排列 1*m 的行向量,元素都是1~n 之间的整数,且该行向量没有重复元素。 (参考:randperm)...
2021-12-08 21:20:55
604
原创 【20211208】【Python】UCI数据集的简单介绍和使用Python保存UCI数据集为.mat文件
一、UCI 数据集介绍进行机器学习学习过程中,会使用到 UCI 公开数据集,UCI 数据集网址:UCI Machine Learning Repository。点击进入之后,页面显示如下:以 iris 数据集为例,点击进入:该页面展示了该数据集的相关信息,包括:数据及相关介绍、相关任务、样本个数、特征个数、是否有缺失值等。常见数据集及其样本个数、特征个数总结:更为详细的数据集介...
2021-12-08 21:14:26
15271
原创 【20211207】【雷达】毫米波雷达(一)—— 基本原理
一、毫米波雷达定义 毫米波雷达传感器使用毫米波,即工作频带为 30GHz-30GHz(波长为 1-10mm)的雷达传感器。 工作频带:30GHz-300GHz 工作波长:1-10mm二、毫米波雷达原理1. CW多普勒雷达 多普勒雷达使用多普勒效应原理,测量得出不同距离目标的速度。 实现方式:CW雷达向目标发射微波信号,接收机接收到目标反射的电磁波,分析发射电磁波和反射波的频率变化,根据发射信号频率和反射信号频率......
2021-12-07 19:22:02
3100
原创 【20211206】【信号处理】对傅里叶变换的理解和一个小例子
一、傅里叶变换 傅里叶变换是一种全局的变换,时域信号经过傅里叶变换后,就变成了频域信号,所以从傅里叶变换频谱上是无法看出时域信息的。傅里叶变换只适合处理平稳信号,对于非平稳信号,由于频率会随时间变化,为了捕获这种时变特性,需要对信号进行时频分析,比如:短时傅里叶变换、小波变换、希尔伯特黄变换等。短时傅里叶变换详见:【20211206】【信号处理】时频分析 —— 短时傅里叶变换(STFT)二、举个栗子使用 Matlab 生成一个单频信号,并进行 F...
2021-12-06 21:56:28
2855
原创 【20211206】【信号处理】时频分析 —— 短时傅里叶变换(STFT)
一、时频分析(JTFA) 分析时域可以得到信号随时间变化的信息,分析频域可以得到信号随频率变化的信息,这两者都只能分析时域或频域,而不能同时观察时域和频域。时频分析是时频联合域分析的简称,是分析时变非平稳信号的有力工具,是一个同时观察时域、频域信息的工具。时频分析法提供了时间域和频率域的联合分布信息,清楚地描述了信号频率随时间变化的关系。 时频分析的基本思想是:设计时间和频率的联合函数,用它同时描述信号在不同时间和频率的能量密度或强度。.........
2021-12-06 21:55:34
17332
2
原创 【20211201】【代码优化】使用 cProfile 和 flameprof 绘制火焰图,调优 Python 代码性能
有时候发现自己的代码运行得很慢,但又难以定位是哪里导致的代码性能差。此时,火焰图上场啦~ Python 中的 cProfile 模块可以生成程序运行的火焰图,检测每个模块的运行效率,使用方法如下:(在命令行直接调用)1. 安装 cProfile 库和 flameprof 库pip install cProfilepip install flameprof2. 命令行查看各个模块运行时间python -m cProfile -s tottime myFi...
2021-12-01 17:24:44
3532
1
原创 【20211201】【代码优化】换个思路,优化掉 dropna / value_counts,时间节省 80%
一、问题背景定义一个函数,该函数实现长度为 15s,步进为5s的滑窗中值估计,但有两个约束条件:(1)在窗口内,参数二不能发生变化;(2)在窗口内,参数三的绝对值小于 3。二、我的最初思路(1)计算参数二的差分,如果做完差分后的数据里有非零值,那么就不满足条件1;(2)计算参数三中数据绝对值的最大值,判断最大值是否小于3。def BPM_statistics_bySlideWin(data_bpm_1Hz, data_rangebin, data_powRa.........
2021-12-01 15:35:32
332
原创 【20211130】【代码优化】代码优化初体验 —— map / lambda / for循环 / 列表推导式的性能对比
一、什么是列表推导式? 列表推导式可以利用 range、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。 语法:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]] /[表达式 [if 条件表达式1 else 条件表达式2] for 迭代变量 in 可迭代对象] 其中,[if 条件表达式] 和 [if 条件表达式1 else 条件表达式2] 可选择,可以有也可以没有。如果只有 if 表达式,.........
2021-11-30 19:59:26
1586
1
原创 【20211130】【Python】int、str 和 bool 类型的相互转换
# int 转 boola, b, c = 0, 1, 2print(bool(a), bool(b), bool(c))# bool 转 inta, b = True, Falseprint(int(a), int(b))# str 转 boola, b, c, d = '0', '1', '2', ''print(bool(a), bool(b), bool(c), bool(d))# bool 转 stra, b = True, Falseprint(str(a), st.
2021-11-30 11:23:41
1630
原创 【20211129】【Python】使用Python计算欧氏距离的方法
该问题源于工作中使用 k 折交叉验证选取最优的 KMeans 算法参数,过程中使用欧氏距离来评价参数的优劣。1. 代公式,封装成函数def calEuclidean(x, y): dist = np.sqrt(np.sum(np.square(x-y))) # 注意:np.array 类型的数据可以直接进行向量、矩阵加减运算。np.square 是对每个元素求平均~~~~ return dist2. 调用 numpy 函数库 使用 nu...
2021-11-29 11:19:09
17084
原创 【20211127】【Python】Python中常用的矩阵操作,单位阵、对角阵、矩阵的特征值和特征向量、矩阵的协方差
一、生成单位阵numpy.identity(N) 和 numpy.eye(N) 都可以用来产生单位阵,且产生的单位阵都是 np.array() 类型,矩阵元素都是 float 型。import numpy as npa = np.eye(4)b = np.identity(4)print(type(a))print(a)print(type(b))print(b)二、生成对角阵(参考:python生成单位阵或者对角阵的三种方法)三、矩...
2021-11-27 14:29:14
6936
1
原创 【20211125】【机器/深度学习】异常检测算法——高斯分布模型(从标准高斯分布到多元高斯分布)
该问题源于工作中的某项需求,需要在日常数据中捕获异常状态,高斯分布派上用场喽~一、标准高斯分布(标准正态分布)概率密度函数为: f(x) ~ N(0, 1),表示该分布均值为 0,方差为 1。注意:概率密度和为1!二、一元高斯分布的一般形式 概率密度函数为:f(x) ~ N(mu, sigma^2),表示该分布均值为 mu,方差为 sigma^2。概率密度函数曲线的对称轴为 mu,sigm...
2021-11-25 20:36:44
4584
原创 【20211125】【Python】Python计算方阵的行列式
此问题源于工作中使用多元高斯模型进行异常检测时,计算多元高斯分布 PDF 时涉及到求方阵的行列式。 假定有方阵A,求 A 的行列式。Python 中使用 numpy 库函数命令实现。import numpy as npA_det = np.linalg.det(A) (参考:python 线性代数:[5]方阵的行列式计算方法)...
2021-11-25 19:13:22
763
原创 【20211125】【Python】Python求逆矩阵
此问题源于工作中使用多元高斯模型进行异常检测时,计算多元高斯分布 PDF 时涉及到求方阵的逆。假定有方阵A,求 A 的逆矩阵。Python 中使用 numpy 库函数命令实现。import numpy as np A_1 = np.linalg.inv(A) # 逆矩阵(奇异矩阵没有逆矩阵,不可以用此命令计算)A_2 = np.linalg.pinv(A) # 伪逆矩阵(奇异矩阵也可以使用,但对非奇异矩阵的计算耗时很多) (参考:...
2021-11-25 19:10:37
2333
原创 【20211125】【Python】报错pymysql.err.InterfaceError: (0, ‘‘)原因及解决方案
一、报错原因关闭了数据库连接之后又使用数据库操作(数据库连接已过期,导致后续的数据库操作不能正常使用)二、解决方案 1. 重新建立数据库连接; 2. 确认数据库使用完毕之后,再关闭连接。三、举个栗子# 连接数据库data_return = cloudSQL_connect(config)db, cursor = data_return[0], data_return[1]sql = '''SELECT device_id from...
2021-11-25 17:57:34
5896
1
原创 【20211123】【机器/深度学习】使用 joblib 保存训练好的模型,并载入模型使用
from sklearn.mixture import GaussianMixtureimport joblib# 训练模型并保存gmm = GaussianMixture(n_components=5, n_init=10)gmm.fit(DataSet)joblib.dump(filename='gmm.model', value=gmm)# 载入模型使用model = joblib.load(filename='gmm.model')y = model.predict(x)..
2021-11-23 20:57:30
2117
原创 【20211123】【Python】修改list/array中的某些数值时,报错TypeError: can only assign an iterable,原因分析及正确的操作方式
(参考:TypeError: can only assign an iterable)(参考:Python_异常处理:TypeError: can only assign an iterable)
2021-11-23 20:47:01
3201
1
原创 【20211123】【Python】dataframe 修改行名、列名的方法
一、 通过 pandas.DataFrame的属性值 index、columns 修改1. 语法df.index = []df.columns = []2. 举个栗子import pandas as pdimport numpy as npa = np.array([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [1, 0, 3, 8, 5]])b = pd.DataFrame(a)print(b)# 方法一:使用属性...
2021-11-23 17:36:10
14971
原创 【20211115】【Python】如何去掉字符串两边的引号
使用 eval() ~~~~a = '[0, 1, 2, 3, 4]'print(a)print(type(a)) # str 类型print(eval(a))print(type(eval(a))) # list 类型 (参考:python 去除字符串两端的引号) (参考:python 去除字符串两端的引号)...
2021-11-15 21:37:10
3979
原创 【20211115】【Python】Python中列表、矩阵元素相乘及矩阵乘法
1. 列表元素相乘使用 * 或者 np.multiply() 可实现对应元素相乘import numpy as npa = [2, 2, 2, 2, 5]b = 2print(np.multiply(a, b))print(np.multiply(a, a))print(np.array(a)*np.array(a))print(a*a) # 会报错!因为 * 实现对应元素相乘,只适用于 np.array 类型2. 矩阵元素相乘 使用 n...
2021-11-15 21:14:44
6278
原创 【20211115】【Python】ValueError: math domain error 报错原因及解决办法
这个问题源于工作中编写的一个功率值转 dB 值的函数,函数输入存在 0 值,而 0 取对数是无意义的!一、报错原因Python 中报错 “math domain error” 通常是由于某些操作不符合数学定义,如:对非正数取对数、对负数开方等等。二、解决办法把 0 替换成一个很小的正数,该问题解决~三、举个栗子import math# 功率值转dB值def fun_pow2db(data_pow, n_dim): ...
2021-11-15 17:16:53
38502
原创 【20211106】【Python】差分及在Python中的实现方法
一、差分1. 差分的含义差分是统计学里常用的概念,统计学中的差分是指离散函数后的后一项减去前一项的差;数学中的差分是一种微分方程数值方法,通过有限差分来近似导数,从而寻求微分方程的近似解。 由 Cramer 分解定理,时间序列 = 确定性影响 + 随机性影响。其中确定性影响可以由多项式决定,对多项式求 N 阶差分,就可以变成常数。 (参考:[时间序列分析][5]--非平稳时间序列模型与差分)2. 差分的阶数 ...
2021-11-06 16:35:36
14618
2
原创 【20211106】【数据分析】hist 和 bar 的区别
hist 和 bar 的区别为:意义不同、创建图形不同、参数不同、正则化不同。一、意义不同 1. hist 是画(频率分布)直方图,x 轴表示这一列数据的种类,y 轴表示该类别出现的次数(频数);bar 是画柱状图。 2. hist 直方图展示的是数据的分布,bar 柱状图展示的数据本身的大小。二、创建的图形不同1. hist 是用来创建一个直方图的 matplotlib 函数;2. bar 是用来创建一个二维条形图的 ma...
2021-11-06 14:55:25
6408
2
原创 【20211106】【Python】使用matplotlib绘制垂直、水平于坐标轴的线
语法: plt.vlines():绘制垂直于 x 轴的线; plt.hlines():绘制平行于 x 轴的线。import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] # 用于显示中文plt.rcParams['axes.unicode_minus'] = False # 用于显示中文a = np.arange(1, 11)...
2021-11-06 11:20:45
8519
原创 【20211106】【Python】numpy ndarray二维数组,按照行、列求平均
语法:np.mean(axis=0):对第 n 列的每行元素求平均。 np.mean(axis=1):对第 m 行的每列元素求平均。import numpy as npa = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [4, 5, 6, 7]])print(a)meanA_row = a.mean(axis=0) # 计算完之后array的长度等于列数meanA_col = a.mean(axis=1) # 计算完...
2021-11-06 11:00:56
9704
原创 【20211103】【Python】map 函数的使用
1.描述map() 是 Python 的一个内置函数,会根据提供的函数对指定序列做映射。2. 函数语法map(fun, iterable, ...)3. 参数:(1)fun —— 映射函数(2)iterable —— 一个或多个序列4. 关于返回值Python 2.x 返回列表,可以直接使用;但Python 3.x 返回的是迭代器,需要使用 list() 进行类型转换之后再使用!5. 举个栗子import numpy...
2021-11-03 14:20:33
342
原创 【20211103】【Python】range 和 arange 的区别和联系
1. range() 和 arange() 都有三个参数,依次为:start, end(不包含end), step。当不指明 start 时,start 默认为 0,不指明 step 时,step 默认为 1。2. range 返回的是一个 list;arange 返回的是一个 ndarray。3. arange 允许步长 step 为小数,但 range 只允许步长为整数。 (参考:range和arange的区别) (参考:range() 和 np.arange...
2021-11-03 14:00:27
489
原创 【20211103】【Python/Matlab】Python 中 numpy.reshape() 和 Matlab 中 reshape(mat) 的区别
1. Python 中 reshapenumpy.arange(n).reshape(a, b) # 依次生成 n 个自然数,并且以 a 行 b 列的数组形式显示''' 常见的用法 ''' reshape(n, -1) # 转化成 n 行reshape(-1, m) # 转化成 m 列举个栗子~import pandas as pdimport numpy as npa = list(range(1, 11, 1))b = np.arange(1, 21, 2)prin
2021-11-03 11:41:41
670
原创 【20211029】【Python】删除 DataFrame 中的某行、某列
pandas 中的 drop 方法是很明智的数据清理的方法,它的好处在于:它不改变原有的 df 中的数据,而是返回另一个新的 DataFrame 来存放删除后的数据。一、drop 的用法import pandas as pdimport numpy as npa = list(range(1, 11))a_reshape = np.array(a).reshape(2, 5).Tb = pd.DataFrame(a_reshape)print(b)1. df.d...
2021-10-29 14:41:58
34471
原创 【20211028】【Python】统计Series/List类型的数据中某元素出现的个数
1. value_count() 方法pandas 中 value_count() 是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值在该列中有多少重复值。注意:value_counts() 是 Series 类型的数据拥有的方法,DataFrame 类型的数据不可以直接用,需要指定对哪一行或哪一列使用(DataFrame 取某列、行之后,就是 Series 类型了)。(参考:pandas中.value_counts()的用法)...
2021-10-29 14:14:25
6705
1
原创 【20211028】【Python】获取DataFrame的行名和列名
1. 获取行名:df.index.values 2. 获取列名:df.columns.values 注意:values 有 's',但没有括号,否则报错!!!!(如下图)import pandas as pdimport numpy as npa = list(range(1, 51))a_reshape = np.array(a).reshape(5, 10).Tprint(a_reshape)b = pd.DataFrame(a_reshape)print...
2021-10-28 11:21:51
10727
原创 【20211009】【Matlab】设置 legend 的位置
legend 除了常用的文字参数外,还可以加 [1, 2, 3, 4] 的参数,分别对应右上角、左上角、左下角、右下角。 (参考:MATLAB如何调整legend标注在图中的位置)
2021-10-09 17:40:53
10976
原创 【20211009】【数学基础】极值点、驻点、拐点的区别和联系
一、极值点1. 定义 极大值和极小值统称为极值点。极值点是函数的某段子区间内极大值或者极小值的横坐标。 极值点出现在函数的驻点(导数为0)或不可导点处(导函数不存在)。 (参考:极值点、驻点、拐点的区别)2. 判别方法(1)若f(x0) 处可导 第一判别法:若 f(x0)处的一阶导数,且 x0 左边的区间内导数>0,x0 右边的区间内导数<0,那么 x0 为极大值。 第...
2021-10-09 09:47:09
18724
2
原创 【20210926】【机器/深度学习】基于 make_blobs 函数库,详解几种 K-Means 算法优化方案,及模型评估
K-Means 算法的主要缺点:算法性能受类别个数 k 值、初始点值、异常点值影响很大。本文针对以上 k-means 算法主要缺点,详解 k-means 算法优化方案。一、make_blobs 函数库 make_blobs() 是 sklearn.datasets 中的一个函数,主要功能是:生成聚类数据集。 主要参数: (1)n_samples:样本数据量,默认值 100; (2)n_features:样本维度,默认.........
2021-09-26 19:29:08
5765
Python 3.7.4-win-64bit-安装包.rar
2019-08-26
用粒子滤波实现二维目标的单目标跟踪
2018-12-27
用粒子滤波算法实现UNGM模型的目标跟踪
2018-12-25
粒子滤波算法用于目标跟踪UNGM模型
2018-12-21
卡尔曼滤波用于单目标定位的程序
2018-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅