矩阵乘法

Python-EEG工具库MNE中文教程(10)-信号空间投影SSP数学原理

余生长醉 提交于 2019-12-27 07:18:27
目录 projector(投影)和投影背景 案例解释投影原理 导入工具库 什么是projector(投影)? 计算正交平面 使用SVD计算投影矩阵 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:903290195 projector(投影)和投影背景 projector(投影)(简称proj),也称为信号空间投影(SSP),定义了应用于空间上的EEG或MEG数据的线性操作。 可以将该操作看做是一个矩阵乘法,通过将数据投影到较低维度的子空间来降低数据的秩。 这种投影算子可以同时应用于数据和正向运算,用于源定位。注意,可以使用这样的投影算子来完成EEG平均参考。 它存储在info[‘projs’]中的测量信息中。 案例解释投影原理 导入工具库 import os import numpy as np import matplotlib . pyplot as plt from mpl_toolkits . mplot3d import Axes3D # noqa from scipy . linalg import svd import mne # 定义绘制3d图像 def setup_3d_axes ( ) : ax = plt . axes ( projection = '3d' ) ax . view_init (

矩阵操作

喜欢而已 提交于 2019-12-27 05:21:04
矩阵操作(数组) 题目描述 给定一个N阶初始矩阵,现有以下操作 TRANSLATE: 转置,即将aij变为aji,操作结束后输出矩阵 ADD: 将该矩阵与一矩阵相加得到一新矩阵,操作结束后输出这一新矩阵 MULTIPLY: 与该矩阵与一矩阵相乘得到一新矩阵,操作结束后输出这一新矩阵(此处不懂矩阵乘法请自行百度) SUM:输出两条对角线上元素之和(不重复计算) 输入 测试数据只有一组 输入的第一行给出一个整数N(1 <= N <= 5),代表矩阵的阶数 下N行代表这一矩阵,其数值都是整数 其后的每一行都是操作,数据保证输入合法 操作以 OVER 结束 输出 具体输出见样例 样例输入 2 1 0 0 1 TRANSLATE ADD 1 0 0 1 ADD 2 0 0 2 MULTIPLY 1 2 3 4 SUM OVER 样例输出 1 0 0 1 2 0 0 2 4 0 0 4 4 8 12 16 40 提示 # include <bits/stdc++.h> using namespace std ; void ts ( int a [ ] [ 100 ] , int n ) ; void add ( int a [ ] [ 100 ] , int n ) ; void mu ( int a [ ] [ 100 ] , int n ) ; void su ( int a [ ] [

矩阵微积分的一些实用结论与推导

断了今生、忘了曾经 提交于 2019-12-26 23:06:56
矩阵微积分的一些实用结论与推导 向量与矩阵的相关运算 矩阵的一元运算 矩阵的拉直算子 矩阵的迹 矩阵的行列式 伴随矩阵与矩阵的逆 矩阵的二元运算 矩阵的乘法 Hadamard乘积 Kronecker积 数量对向量的导数 数量对列向量的导数 对内积运算求导 对矩阵与向量的乘积求导 对二次型求导 矩阵对矩阵的导数 数量对矩阵的导数 对矩阵的一元运算求导 对拉直算子求导 对矩阵的迹求导数 对矩阵的行列式求导数 对矩阵的二元运算求导 对矩阵的乘法求导 对矩阵的Hadamard乘积求导 对矩阵的张量积求导 在一些优化问题中,经常会出现选择向量或者矩阵来最优化某个目标函数的情况,要想从理论上求解这类优化,就需要正确计算目标函数关于向量或者矩阵的导数。比如多元回归模型中,要用最小二乘法估计回归系数,需要做以下的最优化: min ⁡ β Q = ( Y − X β ) 2 {\min_{\beta}} Q=(Y - X\beta)^2 β min ​ Q = ( Y − X β ) 2 然而现有的教材和论文都只是需要什么就临时查证推导一下,很少有系统地总结目标函数怎么对向量或矩阵求导的资料。这篇博文比较全面地整理了向量与矩阵的一些常用运算,以及怎么对这些常用运算求导的方法。有张量积和拉平算子就足以解决大部分领域的问题了,所以这篇博文不会涉及张量以及张量分析的内容

稀疏矩阵算法

亡梦爱人 提交于 2019-12-26 22:50:13
1、稀疏矩阵的压缩存储  为了节省存储单元,可只存储非零元素。由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须存储非零元素所在的行号、列号,才能迅速确定一个非零元素是矩阵中的哪一个元素。稀疏矩阵的压缩存储会失去随机存取功能。  其中每一个非零元素所在的行号、列号和值组成一个三元组(i,j,a ij ),并由此三元组惟一确定。  稀疏矩阵进行压缩存储通常有两类方法:顺序存储和链式存储。链式存储方法。 2、三元组表  将表示稀疏矩阵的非零元素的三元组按行优先(或列优先)的顺序排列(跳过零元素),并依次存放在向量中,这种稀疏矩阵的顺序存储结构称为三元组表。 注意:   以下的讨论中,均假定三元组是按行优先顺序排列的。        (1)三元组表的类型说明   为了运算方便,将矩阵的总行数、总列数及非零元素的总数均作为三元组表的属性进行描述。其类型描述为: #define MaxSize 10000 //由用户定义 typedef int DataType; //由用户定义 typedef struct { //三元组 int i,j;//非零元的行、列号 DataType v; //非零元的值 }TriTupleNode; typedef struct{ //三元组表 TriTupleNode data[MaxSize]; //三元组表空间 int m,n,t; /

线代:1.9SVD的应用与多元线性回归

狂风中的少年 提交于 2019-12-26 10:49:29
文章目录 任务详解: Svd分解的应用 1.图像压缩 传统网络图片传输与现代传输的原理 2.矩阵乘法加速 多元线性回归 情况1,N>n,样本数>维度(参数个数) 情况2,N 任务详解: 这节课主要介绍了SVD分解的应用,多元线性回归等知识点。 掌握目标: 1、掌握svd分解的应用以及意义 2、掌握多元线性回归,以及矩阵表达形式,以及样本个数和维数不同情况下解的情况 Svd分解的应用 先回顾SVD,就是在矩阵A左右两边分别乘以 U H U^H U H 和 V V V ,得到一个对称矩阵,最后通过证明得到了下面的形式: A = U [ Σ 0 0 0 ] V T (1) A=U\begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix}V^T\tag{1} A = U [ Σ 0 ​ 0 0 ​ ] V T ( 1 ) 上式中各自的shape如下: A:m×n U:m×m [ Σ 0 0 0 ] \begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix} [ Σ 0 ​ 0 0 ​ ] :m×n V T V^T V T :n×n 如果矩阵A的秩R(A)=r,则 Σ \Sigma Σ 是r×r对角阵,对角线上的元素就是 A T A A^TA A T A 的不为0的特征值,把U写成列向量的形式 [ u 1 , u 2

优雅的线性代数系列一

狂风中的少年 提交于 2019-12-26 09:47:51
 说道线性代数, 我们自然就想到矩阵, 那我们该如何理解矩阵呢? 矩阵与线性变换 若一个变换 \(L\) 满足以下两条性质 \[ \begin{align*} L(\vec v+ \vec w) &= L(\vec v) + L(\vec w) &(1) \text{"可加性"} \\ L(c\vec v) &= c L(\vec v) \quad\quad\ &(2) \text{"成比例"} \end{align*} \] 则称 \(L\) 是线性的. 值得注意的一点时, 线性变换中, 坐标系的原点不动, 即零向量的变换结果还是零向量. 我们来看看矩阵与线性变换的关系 \[ A(v+w) = Av + Aw \Leftrightarrow L(\vec v+ \vec w) = L(\vec v) + L(\vec w)\\ A(cv) = c(Av) \Leftrightarrow L(c\vec v) = c L(\vec v) \] 可以看出矩阵完全满足线性变换的要求, 所以现在你应该将矩阵看做线性变换, 这会给我们理解很多线性问题带来很大的好处. \(\bigstar\) 如果想知道线性变换对于一个输入向量空间有什么影响, 我们只需要知道该线性变换对该输入空间的基有什么影响, 我们就能知道所有信息. 假设 n 维输入空间 \(R^n\) 的基为 \(v1, v_2,

MATLAB基础(3)

落爺英雄遲暮 提交于 2019-12-26 09:34:29
1.MATLAB的运算 本次介绍的是MATLAB中的运算符。分别有算术运算符,关系运算符和,逻辑运算符。 表3.1 算术运算符 运算符 说明 运算符 说明 + 加法 .\ 左除法 - 减法 \ 矩阵左除法 .* 乘法 .^ 求幂 * 矩阵乘法 ^ 矩阵求幂 ./ 右除法 .' 转置 / 矩阵右除法 ' 矩阵求秩,复数求共轭 表3.2 关系运算符 运算符 说明 函数 < 小于 lt(a,b) <= 小于等于 le(a,b) > 大于 gt(a,b) >= 大于等于 ge(a,b) == 恒等于 eq(a,b) ~= 不等于 ne(a) 表3.3 逻辑运算符与函数对应表 运算符 说明 函数 & 与运算 and(a,b) | 或运算 or(a,b) ~ 非运算 not(a) xor 异或 xor(a,b) 2.MATLAB的矩阵 表3.4 构造特殊矩阵函数表 函数 说明 ones(n); ones(n,m) 建立一个元素都为1的矩阵 zeros(n); zeros(n,m) 建立一个元素都为0的矩阵 eye(n); eye(n,m) 建立一对角线元素为1,其他元素都为0的矩阵 diag(v); diag(X); diag(v,k); diag(X,k) 将一个向量变成一个对角矩阵,或求一个矩阵的对角元素 magic(n) 建立一个方阵使得它的每一行,每一列,和对角线元素的和都相等

matlab软件的矩阵和数组操作解析

血红的双手。 提交于 2019-12-26 09:33:54
矩阵和数组操作 Matlab中文含义就是矩阵实验室的意思,轻松灵活的处理矩阵式Matlab语言的特色。 概念: 数组:与其它编程语言一样,定义是:相同数据类型元素的集合。 矩阵:数学中早已定义。不再赘述,matlab中处理最多的是二维矩阵 矩阵的创建: 1直接输入 在命令行窗口中定义 A=[1,2,3;4,5,6;7,8,9] 分好是换行,逗号是本行 回车后如下图: 2函数法生成特殊的矩阵 (1)零矩阵:zeros(n) :生成n*n的零矩阵 zeros(n,m): 生成n*m的零矩阵 如下图: (2)单位矩阵:eye(n): 生成n*n的单位矩阵(对角线元素为1 其余元素为0) eye(n,m): 生成n*m的单位阵 如下图: (3)魔方矩阵(行、列、对角线元素和相同):magic()用法和以上函数一样 (4)对角矩阵(对角线上的矩阵非0):dig(1:5) :生成对角线元素为1,2,3,4,5 的5*5矩阵 如下图: (5)上三角矩阵(对角线以下的元素为0): triu() (6)下三角元素(对角线元素以上为0): tril() 代码: >> a=[1,2,3;4,5,6;7,8,9] a = 1 2 3 4 5 6 7 8 9 >> a=zeros(3,2) a = 0 0 0 0 0 0 >> a=eye(4) a = 1 0 0 0 0 1 0 0 0 0 1 0 0 0

彻底理解数字图像处理中的卷积-以Sobel算子为例

回眸只為那壹抹淺笑 提交于 2019-12-26 09:04:55
彻底理解数字图像处理中的卷积-以Sobel算子为例 作者:FreeBlues 修订记录 - 2016.08.04 初稿完成 概述 卷积 在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨论卷积在数字图像处理中的应用. 在数字图像处理中, 有一种基本的处理方法: 线性滤波 . 待处理的平面数字图像可被看做一个大矩阵, 图像的每个像素对应着矩阵的每个元素, 假设我们平面的分辨率是 1024*768 , 那么对应的大矩阵的 行数 = 1024 , 列数 = 768 . 用于滤波的是一个滤波器小矩阵(也叫 卷积核 ), 滤波器小矩阵一般是个方阵, 也就是 行数 和 列数 相同, 比如常见的用于边缘检测的 Sobel 算子 就是两个 3*3 的小矩阵. 进行滤波就是对于大矩阵中的每个像素, 计算它周围像素和滤波器矩阵对应位置元素的乘积, 然后把结果相加到一起, 最终得到的值就作为该像素的新值, 这样就完成了一次滤波. 上面的处理过程可以参考这个示意图: 图像卷积计算示意图: 对图像大矩阵和滤波小矩阵对应位置元素相乘再求和的操作就叫 卷积 ( Convolution )或 协相关 ( Correlation ). 协相关 ( Correlation )和 卷积 ( Convolution )很类似, 两者唯一的差别就是 卷积 在计算前需要翻转 卷积核 , 而 协相关

Numpy的基础知识

我怕爱的太早我们不能终老 提交于 2019-12-26 01:29:05
文章目录 Numerical Python介绍 基础数据结构ndarray数组 为什么引入ndarray数组 ndarray数组和list列表分别完成对每个元素增加1的计算 ndarray数组和list列表分别完成相加计算 如何创建ndarray数组 查看ndarray数组的属性 改变ndarray数组的数据类型和形状 ndarray数组的基本运算 标量和ndarray数组之间的运算 两个ndarray数组之间的运算 ndarray数组的索引和切片 ndarray数组的统计运算 随机数np.random 创建随机ndarray数组 设置随机数种子 随机打乱ndarray数组顺序 随机选取元素 线性代数 Numpy保存和导入文件 Numpy应用举例 Numpy应用举例——计算激活函数 Numpy应用举例——图像翻转和裁剪 课程作业 1 使用numpy计算tanh激活函数 2 统计随机生成矩阵中有多少个元素大于0 Numerical Python介绍 Numpy是Numerical Python的简称,是Python中高性能科学计算和数据分析的基础包。Numpy提供了一个多维数组类型ndarray,它具有矢量算术运算和复杂广播的能力,可以实现快速的计算并且能节省存储空间。在使用Python调用飞桨API完成深度学习任务的过程中,通常会使用Numpy实现数据预处理和一些模型指标的计算