matlab矩阵

[原创]Matlab 生成随机数

∥☆過路亽.° 提交于 2019-11-29 04:56:14
Matlab 中有着丰富的随机数生成函数以应用于不同的情景,我一般使用生成随机的 1~N 的整数,但是之前了解的只有 rand 函数,其生成主要为 0 ~ 1 之间的随机数,但是和所预想的有差异。在此进行进行了help 指令,之后了解到了 randi 函数,并初步学会使用,在此做一个记录。 rand 函数 rand 函数是生产 0 ~ 1 的随机数,rand(N) 为生产一个 N 行 N 列的随机数矩阵,rand(M, N) 为生成一个 M 行 N 列的随机数矩阵。以下为一些示例。 >> rand(3) ans = 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575 >> rand(2, 3) ans = 0.9649 0.9706 0.4854 0.1576 0.9572 0.8003 在 help rand 后,我们可以观察其解释说明。 >> help rand rand Uniformly distributed pseudorandom numbers. R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open

matlab中size函数总结

為{幸葍}努か 提交于 2019-11-28 18:28:52
size(A)函数是用来求矩阵的大小的。 比如说一个A是一个3×4的二维矩阵: 1、size(A) %直接显示出A大小 输出:ans= 3 4 2、s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个元素是矩阵的列数 输出:s= 3 4 3、[r,c]=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c 输出:r= 3 c= 4 4、[r,c,m]=size(A) 输出:r= 3 c= 4 m= 1 也就说它把二维矩阵当作第三维为1的三维矩阵,这也如同我们把n维列向量当作n×1的矩阵一样 5、当a是一个n维行向量时,size(A)把其当成一个1×n的矩阵,因此size(a)的结果是 ans 1 n 而不是a的元素个数n 6、size(A,n) 如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数 来源: http://www.cnblogs.com/cdsj/p/6055076.html

Matlab中Rand()函数用法

拟墨画扇 提交于 2019-11-28 18:28:44
一、理论准备 matlab函数randn:产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。 用法:Y = randn(n),返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。 Y = randn(m,n) 或 Y = randn([m n]), 返回一个m*n的随机项矩阵。 Y = randn(m,n,p,...) 或 Y = randn([m n p...]), 产生随机数组(感觉就是三维数组,请看如下例子)。 1: >> rand(1,2,3) 2: ans(:,:,1) = 3: 0.445586200710899 0.646313010111265 4: ans(:,:,2) = 5: 0.709364830858073 0.754686681982361 6: ans(:,:,3) = 7: 0.276025076998578 0.679702676853675 Y = randn(size(A)), 返回一个和A有同样维数大小的随机数组。 randn s = randn('state'),估计和C++里初始化随机种子一个意思,随便了。 二、举例分析 产生一个随机分布的指定均值和方差的矩阵:将randn产生的结果乘以标准差,然后加上期望均值即可。例如,产生均值为0.6,方差为0.1的一个5*5的随机数方式如下: 1: x

matlab基础知识

人走茶凉 提交于 2019-11-28 16:08:26
1.ceil(x):向上取整 floor(x):向下取整 2.round(x,y):保留小数点后y位 3.sign(x):判断正负,若为正,则为1;若为负,则为-1;若为0,则为0 4.conj(x):取x的共轭 abs(x):取模 real(x):取x的实部 imag(x):取x的虚部 angle(x):求复数矩阵相位角的弧度值 5.flipu(x):矩阵的第一行与最后一行进行互换 flipdim(x,dim):dim为1,表示每一列进行逆序排列;dim为2,表示每一行进行逆序排列 fliplr(x):实现矩阵沿垂直轴左右翻转 6.mean(x):mean函数是一个求数组平均值的函数 mean(x,dim):dim为1,求每一列的平均值;dim为2,求每一行的平均值 7.length(x):length(x)为数列的长度,即它里面有多少个元素.如果x0是矩阵的话,比方说M行N列,那么length返回M和N这两个数的最大值 8.[b0,ind]=sort(x):按列将矩阵排序,然后找出他们的位置 [b0,ind]=sort(x,2):按行将矩阵排序,然后找出他们的位置 9.dot(a,b):向量的点乘,ps:只能用于向量,不可以用于矩阵 cross(a,b):向量的×乘 10.[m,n]=size(a):求矩阵的行列,行为m,列为n 11.可以用;或者回车换行输入命令 12

Matlab求微分方程的符号解1

有些话、适合烂在心里 提交于 2019-11-28 05:47:46
一、常微分方程的求解 例1、 例2、 例3、 通常我们使用syms 和dsolve来求解; first: second: 表示 third:如果有必要 功能函数 diff 可以完成 一元或多元函数任意阶数 的微分: (对于自变量的个数多于一个的符号矩阵,微分为Jocabian矩阵,采用功能函数Jacobian实现) 1、diff函数 diff(S,'v'):将符号“ v ”视作变量,对符号表达式或者符号矩阵求取微分。 diff(S,n):将S中的默认变量进行n阶微分运算,其中默认变量可用findsym函数确定。 diff(S,'v',n):将符号“ v ”视作变量,对符号表达式或矩阵S进行n阶微分运算。 2、jacobian函数 R=jacobian(w,v):其中w是一个符号列向量,v是指定进行变换的变量所组成的行向量。 (第一个参数必须是列向量,第二个参数必须是行向量) 隐函数的初值问题求解: 来源: https://www.cnblogs.com/gti2baby/p/11389793.html

PCA算法学习_2(PCA理论的matlab实现)

こ雲淡風輕ζ 提交于 2019-11-28 04:05:40
   前言   在前面的博文 PCA算法学习_1(OpenCV中PCA实现人脸降维) 中已经初步介绍了PCA算法的大概流程及在人脸降维上面的应用。本文就进一步介绍下其理论基础和matlab的实现(也是网上学者的代码)。   开发环境:Matlab2012a    基础   假设X是一个m*n的矩阵,是由样本数据构成的矩阵。其中m表示样本的属性维数,n表示样本的个数。现在要对X进行线性变换变成另一个矩阵Y,使得Y的协方差矩阵为对角矩阵,这样的Y就认为是对原始矩阵X提取主成分后的矩阵,实际过程中只需取Y的前面主要的行即可。   X变换到Y的线性变换公式为:      X和Y的协方差计算方法为:         从下面的公式可以看出Cy和Cx的关系为:      因为Cx是对称矩阵,对Cx进行特征值分解就可以将其变换成对角矩阵,见下面的公式推导:      公式中的P和E满足:      其中D是由Cx的特征向量构成的对角矩阵。P是线性变换矩阵,P的每一行都是Cx矩阵的特征向量,且P是正交矩阵,一般情况下把特征值大的特征向量排在矩阵前面几行。   由此可知,求出P后就可以求出X主成分矩阵了。   另外,还可以求出PCA的白化矩阵,PCA的白化矩阵就是特征向量去相关的矩阵,白化矩阵的协方差阵一般为单位矩阵,在PCA中可以这么求:inv(sqrt(D))*E'

冈萨雷斯Matlab版第二章(基本原理)要点记录

こ雲淡風輕ζ 提交于 2019-11-27 16:22:56
标准数组生成 zero(M, N) 生成一个大小是M N的double类矩阵,其元素均为0 ones(M, N) 生成一个大小是M N的double类矩阵,其元素均为1 ture(M, N) 生成一个大小是M N的logical类矩阵,其元素均为1 false(M, N) 生成一个大小是M N的logical类矩阵,其元素均为0 magic(M) 生成一个大小均为M N的“魔方矩阵”,在该矩阵中,每一行的元素之和、每一列的元素之和以及主对角线中的元素之和均相等,易于生成,元素均为整数 rand(M, N) 生成一个大小是M N的矩阵,其元素都是在区间[0,1]中均匀分布的随机数 randn(M, N) 生成一个大小是M*N的矩阵,其元素是正态分布的随机数,随机数均值为0,方差为1 数组和矩阵算术运算符 图像是等价于矩阵的二维数组,因此以下所有运算符均适用于图像 .* 表示数组乘法, times(A, B) 这种乘法的乘积是与A和B大小相同的数组,其每个元素都是A和B中相应元素的乘积 * 表示传统意义的矩阵乘法 mtimes(A, B) ./ 数组右除 rdivide()A, B .\ 数组左除 ldivide(A, B) / 矩阵右除 mrdivide(A, B) \ 矩阵左除 mldivide(A, B) .^ 数组求幂 power(A, B) ^ 矩阵求幂 mpower(A,

MATLAB基础知识

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 15:56:06
1.1 MATLAB简介 MATLAB集成开发环境功能强大,精度高,凭借于其强大的工具箱和矩阵处理能力,成为一款高效的科学计算软件。 1.2 Help Help查询按钮 或 在命令窗口输入demo/demos打开帮助主演示界面,可进行查询,会有很大的帮助。 1.3 矩阵的表示 矩阵和向量,都是用来描述某一个问题的方程组的系数,由方程组的系数和常数构成。包括数值矩阵、符号矩阵和特殊矩阵。 1.3.1 数值矩阵的生成 实数值矩阵的输入 直接按行输入每个元素,行内由逗号或空格分隔,行间用分号分隔。 复数矩阵的输入 先定义实数矩阵,再用其来生成复数矩阵。 1.3.2 符号矩阵的生成 符号矩阵定义函数sym定义矩阵 来源: https://www.cnblogs.com/zyr001/p/11369300.html

Matlab矩阵如何删除特定的行和列?

Deadly 提交于 2019-11-27 02:40:50
在Matlab2016中,输入矩阵A=[1 2 3;4 5 6;7 8 9];只取矩阵中第一行的元素A1=A(1,:); 若要删除第一行的元素则A(1,:)=[] <textarea readonly="readonly" name="code" class="c++"> >> A=[1 2 3;4 5 6;7 8 9]; >> A1=A(1,:) A1 = 1 2 3 >> A(1,:)=[] A = 4 5 6 7 8 9 </textarea> 如果要删除矩阵A中后面两行,则有 A=[1 2 3;4 5 6;7 8 9]; A(2:3,:)=[] <textarea readonly="readonly" name="code" class="c++"> A=[1 2 3;4 5 6;7 8 9]; A(2:3,:)=[] A = 1 2 3 </textarea> 如果要删除矩阵A中后面两列,则有 A=[1 2 3;4 5 6;7 8 9]; A(:,2:3)=[] <textarea readonly="readonly" name="code" class="c++"> A=[1 2 3;4 5 6;7 8 9]; A(:,2:3)=[] A = 1 4 7 </textarea> 来源: https://blog.csdn.net/qq_40794710

遗传算法及其matlab实现

痴心易碎 提交于 2019-11-26 17:00:37
遗传算法,模拟达尔文的自然选择和遗传学的机理的生物进化的计算模型。其实,遗传算法用到生物学的知识不多,一些中学的生物知识就足以应付。 其实,接触遗传算法是有一种熟悉的感觉。因为假期涉猎了机器学习,其中接触的第一个相关的算法就是梯度下降算法。(有关这个算法,以后再记录),这个算法的作用就是通过求偏导,使梯度不断下降,最终达到了一个局部的最优解。但是问题来了,在很多工业生产实践中,通常是不可微,不连续的,此时这些算法如梯度下降、牛顿法就有些力不从心了。进而一些智能算法就出现了,其中就有遗传算法,这些算法能够经过多次的迭代、概率的变化从而逐渐逼近 全局最优解 。 遗传算法依循“适者生存,优胜劣汰”的原则,通过模拟生物在自然选择中的进化过程,依靠选择,交叉,变异等机制对染色体 进行组合,实现染色体的不断更新,其中每条染色体对应一个解,每次迭代筛选群体中满足适应度的后代。 一、我们要进行编码,编码通常有两种。 1,实数编码:直观,无需解码,但是容易收敛,从而过早陷入局部最优解。简单理解来说,就是两个解之间的尺度太大了。 2,二进制编码:稳定性高,种群多样性大,不直观。 而我们在问题求解时倾向于用二进制编码的。二进制编码更有利于遗传算法的理解。 举一例子,如果x的定义范围是[0,4],则我们常规的编码成二进制是[0000,0100],那么解的可取范围就是,0000,0001,0010,0011