线性

浅谈LTI系统与卷积

痞子三分冷 提交于 2020-01-27 04:08:58
参考 信号与系统(第二版)奥本海姆 系统 在开始正文之前,可以回顾一下,信号与系统的思想。实际上,系统的思想广泛存在并应用于现实世界中。比如,大学可以是一个系统,每一个学生可以视作单个输入,大学中的各类课程可以看出是系统响应,每一个年级的学生看成一个输入序列。那么,输出就可以看成,每一位学生与这个学校的所有课程做卷积的一个过程(默认大学是LTI系统),因此最终的输出结果也是一个序列。 一般来说,我们习惯于使用数学模型来描述一个系统即y=f(x)只不过这里的x在时域系统上是x=f(t)在空域系统上是x=f(n)(n可以是多维向量,用以表示多维空间的坐标)。在信号处理中,我们一般研究时域上面的系统。 LTI系统 LTI系统全称是线性时不变系统(Linear Invariant System)。在空域上即是LSI系统。显然LTI系统是一类系统其具有线性与时不变性。这对于卷积的理解至关重要。 线性即系统对于一个序列的输出满足齐次叠加原则,所以如果我们用移位脉冲序列来表示一个输入信号的话。系统的输出可以看成是每一个移位脉冲信号的输出信号的叠加。 时不变性即系统的特征不由时间的改变而改变,从数学上来说就是当输入序列为x[n-n0]输出信号就是y[n-n0]。 卷积 卷积是一种运算方式亦可以说是算子,这一运算可以被理解为对输入信号(序列)按照系统特征加权求和(离散)或加权求积(连续)。

线性回归

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-25 02:51:51
线性回归与梯度算法 线性回归是研究分析一个变量与另外一个或多个变量之间关系的方法。 期望:用一条直线表示这种关系。 线性回归(Linear Regression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。 线性回归 (Linear Regression),亦称为直线回归,即用直线表示的回归,与曲线回归相对。若因变量Y对自变量X1、X2…、Xm的回归方程是线性方程,即μy=β0 +β1X1 +β2X2 +…βmXm,其中β0是常数项,βi是自变量Xi的回归系数,M为任何自然数。这时就称Y对X1、X2、…、Xm的回归为线性回归。 简单回归: 只有一个自变量的线性回归称为简单回归,如下面示例: X表示某商品的数量,Y表示这些不同数量商品的总价格 x=[0, 1, 2, 3, 4, 5] y=[0, 17, 45, 55, 85, 99] 二维坐标中绘图如下图: 现在当商品数量 X = 6时,估计商品总价是多少? 我们可以很明显的看到,商品总价随商品的数量上升而上升,这是一个典型的线性回归。 因为只有一个自变量X,我们假设线性回归模型: Y = a * X + b 我们需要求出最合适的a,b值,使得直线:Y = a * X + b 与上图的趋势相拟合,这时候才能去预测不同商品数量X下的总价Y。

分治法:线性时间选择 python

妖精的绣舞 提交于 2020-01-23 16:14:27
大家好,我是连人,本期分享线性时间选择问题。 线性时间选择是基于 快速排序 的一种延申,本质上和快排具有类似的地方。它的目的是找出这个数组中第k小的值。 既然只需找出1个值,我们就不必将整个数组排序。通过分治法和分区(partition)可以只将k所在范围内的值进行查找即可。 当然可以使用二分法去确立k的范围, 但是我的课本上没有所以我们今天不讨论。 下面介绍两种算法:随机选择和中位数选择。 随机选择 随机选择是在当前处理的数组中随机挑选一个数,以这个数对数组进行partition操作,判断k与这个数的位置p的关系,如果k<=p,则再将左边进行当前操作,反之则对右边操作,体现了分治的思想。 举个例子。 查找第三小的数字 1,5,7,2,4,8,6 选择了7作为基准 partition后: 1,5,6,2,4,7,8 7的位置是6,3<6,所以将 1,5,6,2,4,7 再进行这次操作,直到数组只剩下一个数,即为所求 可以得知,随机选择在最坏情况下(例如找最大值时总是在最小值处划分)需要将所有元素都遍历一遍,需要O(n 2 )的时间。尽管如此,该算法的平均性能还是很好。可以证明,随机选择算法可以在O(n)的平均时间内找出n个输入元素中第k小的元素。 他说是,辣就是,反正我也不会证。 下面贴代码: import random def partition ( a , left ,

几道基础的经典线性DP

独自空忆成欢 提交于 2020-01-22 12:44:01
部分资源来自AcWing 1.数字三角形 链接: http://acm.hdu.edu.cn/showproblem.php?pid=2084 这是一道比较简单的线性DP问题,把f [ i, j ] 分成从左边来的和从上边来的两类就可以了,下面是代码: #include <iostream> #include <cstdio> #include <algorithm> #include <limits.h> #define N 110 using namespace std; int t, n; int g[N][N]; int f[N][N]; int main() { cin >> t; while(t--) { cin >> n; for (int i = 1; i <= n; i++) for (int j = 1; j <= i; j++) cin >> g[i][j]; for (int i = 0; i <= n; i++) for (int j = 0; j <= i+1; j++) f[i][j] = -INT_MAX; f[1][1] = g[1][1]; for (int i = 2; i <= n; i++) for (int j = 1; j <= i; j++) { f[i][j] = max(f[i-1][j-1], f[i-1][j]) + g[i]

数学小记

那年仲夏 提交于 2020-01-22 07:25:28
数学是一种工具,也是一种思维,时间空间的抽象 n维空间,每一点都是对应一个数据 坐标轴以及图形 让 函数变得形象,更生动,更迷人 映射可以将数据从一个空间转换到另一个空间,甚至可以将时间抹去(时域频域) 各种定理,定义,公理,引理,法则都是一种约定,前人证明,后人可以享用的财富 问题求解,公式证明 概率: 所有不确定的事物,都可以算一个概率分布,也就都可以用概率来分析,比如预测值和实际值之间的误差,因为实际值是受很多种因素影响的,而预测值则是根据一些选定的元素来估计的 一般现实生活中,一个事情各种情况发生的概率 由于受多个因素影响,根据中心极限定理,易得出 是服从一个正态分布的,也叫高斯分布 正态分布虽然随机,但是是有均值和方差来限制的,是越靠近均值,概率越大,方差越小,说明大部分情况都集中在均值附近,曲线越陡峭 随机变量,随机过程,概率分布,联合概率分布,条件概率分布,大数定理,中心极限定理, 最大似然估计(maximum likelihood estimation, MLE):一般就是给出一堆样本,然后假设一个概率分布,然后确定出这个分布的具体的参数,使得根据这个分布,已有的样本的总体概率最大(极值),也就是一个最优化的问题,求极值, 将所有样本代入,得到总的概率,这是一个关于参数的函数,如果可到,可以直接对参数求导,多个参数则求偏导,然后解方程组 否则

典型相关分析原理(CCA)

被刻印的时光 ゝ 提交于 2020-01-22 01:59:47
CCA典型相关分析 (canonical correlation analysis)利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。 Canonical Correlation Analysis典范相关分析/Canonical Correspondence Analysis典范对应分析 简单相关系数描述两组变量的相关关系的缺点:只是孤立考虑单个X与单个Y间的相关,没有考虑X、Y变量组内部各变量间的相关。两组间有许多简单相关系数,使问题显得复杂,难以从整体描述。典型相关是简单相关、多重相关的推广。典型相关是研究两组变量之间相关性的一种统计分析方法。也是一种 降维技术 。 1936年,Hotelling提出典型相关分析。考虑两组变量的线性组合, 并研究它们之间的相关系数p(u,v).在所有的线性组合中, 找一对相关系数最大的线性组合, 用这个组合的单相关系数来表示两组变量的相关性, 叫做两组变量的典型相关系数, 而这两个线性组合叫做一对典型变量。在两组多变量的情形下, 需要用若干对典型变量才能完全反映出它们之间的相关性。下一步,

选择中位数-线性时间算法

时光怂恿深爱的人放手 提交于 2020-01-19 15:52:38
  本章继续讲一些关于奇淫技巧(算法啦)的做法,对于一个无序数组,我们如何找到其中位数呢?   首先回顾一下中位数的概念:是按顺序排列的一组数据中居于中间位置的数。    1, 当前的先决条件是无序数组,那根据原理可以很快想到一种解法,对数组进行遍历,每次找出其最大值、最小值,最终残留的一位或两位即为中位数(两位则取平均值),时间复杂度 O(N) * N;当然,一次遍历中我们可以同时获取到最大值和最小值,将遍历的次数降低一半到 O(N)*N/2,但同样难以改变其时间复杂度为 O(N 2 ) 的事实( 这里有想法的同学先不要着急否定,后面一步步迭代 )。    2, 很明显,上述的方法无法达到我们的想要的一种状态,那反观概念,如果是排好序的数组,我们完全可以在一次计算中得到其中位数,那就可以对数组先进行一次快排,使其达到有序的状态再返回中位数,时间复杂度就是快排的复杂度 O(N * log N )    3, 换一种思路,我们知道数组的个数,那中位数无非就是整个数组中第 (n)/2(偶数则包含 n/2-1)大的数,所以我们也可以采用堆排的方案,找出第 i 位大的值即中位数,时间复杂度就是堆排的复杂度 O(N * log N )    4, 本章重点解法,我们假设每次可以将数组分成两个部分,时刻保证前半部分 A 的任何元素大于后半部分 B 的任何元素

线性代数(5): 线性系统

大憨熊 提交于 2020-01-19 01:08:56
文章目录 1 线性系统与消元法 2 高斯消元法 3 高斯-约旦消元法 4 行最简式和线性方程组解的结构 5 直观理解线性方程组解的结构 6 更一般化的高斯-约旦消元法 7 齐次线性方程组 参考资料 注:转载请标明原文出处链接: https://xiongyiming.blog.csdn.net/article/details/103897231 1 线性系统与消元法 来源: CSDN 作者: TechXYM 链接: https://blog.csdn.net/zaishuiyifangxym/article/details/103897231

P3383 【模板】线性筛素数

青春壹個敷衍的年華 提交于 2020-01-17 20:32:51
//P3383 【模板】线性筛素数 #include<bits/stdc++.h> using namespace std; int is_prime[10000005]; void Find_prime(int n) { memset(is_prime,1,sizeof(is_prime)); is_prime[1]=0; for(int i=2;i*i<=n;i++) if(is_prime[i]) for(int j=i*i;j<=n;j+=i) is_prime[j]=0; } int main() { int n,m; scanf("%d%d",&n,&m); Find_prime(n+1); for(int i=1;i<=m;i++){ int Ask;scanf("%d",&Ask); printf((is_prime[Ask])?"Yes\n":"No\n"); } return 0; } 来源: https://www.cnblogs.com/akioi/p/12207227.html