精华内容
下载资源
问答
  • 正确写法:cvConvertScale(sumPalm, mean, 0.2, 0); 错误写法: 这里,如果您写成cvConvertScale(sumPalm, mean, 1/5, 0);...另外,在访问CvMat数据时,比如用cvmGet 和 cvmSet ,矩阵的索引是从0、0开始的。

    正确写法:cvConvertScale(sumPalm, mean, 0.2, 0);

    错误写法:

    这里,如果您写成cvConvertScale(sumPalm, mean, 1/5, 0);,  则mean = sumPalm*0+0

    这里1/5会当成0来处理。

        


    另外,在访问CvMat数据时,比如用cvmGet 和 cvmSet ,矩阵的索引是从0、0开始的。


    展开全文
  • 矩阵游戏

    2016-09-24 22:31:12
    她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式: 递推式中a,b,c,d都是给定的常数。 现在婷婷想知道F[n][m]的值是多少,请你帮助她。由于最终结果...

    【题目描述】


    婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储)。她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式:

    递推式中a,b,c,d都是给定的常数。

    现在婷婷想知道F[n][m]的值是多少,请你帮助她。由于最终结果可能很大,你只需要输出F[n][m]除以1,000,000,007的余数。



    【输入格式】


    包含一行有六个整数n,m,a,b,c,d。意义如题所述。



    【输出格式】


    包含一个整数,表示F[n][m]除以1,000,000,007的余数。



    【样例输入】

    3 4 1 3 2 6

    【样例输出】

    85

    【提示】

    样例中的矩阵为:

    【数据范围】

    矩阵快速幂

    #include<fstream>
    #include<string>
    
    using namespace std;
    const long long p=1000000000+7;
    
    ifstream cin("matrixb.in");
    ofstream cout("matrixb.out"); 
    
    string s1,s2;
    int a,b,c,d;
    long long C[2][2],A[2][2],x[2][2],y[2][2],z[2][2],t[2][2];
    long long D[20][2][2];
    
    struct bigint
    {
    	int d[1000010];
    	int len;
    }
    n,m;
    
    void st(long long a[2][2])
    {
    	a[0][0]=1;
    	a[0][1]=0;
    	a[1][0]=0;
    	a[1][1]=1;
    }
    void multiple(long long a[2][2],long long b[2][2],long long c[2][2])
    {	
    	long long x1=(b[0][0]*c[0][0]+b[0][1]*c[1][0])%p;
    	long long x2=(b[0][0]*c[0][1]+b[0][1]*c[1][1])%p;
    	long long x3=(b[1][0]*c[0][0]+b[1][1]*c[1][0])%p;
    	long long x4=(b[1][0]*c[0][1]+b[1][1]*c[1][1])%p;
    	a[0][0]=x1;
    	a[0][1]=x2;
    	a[1][0]=x3;
    	a[1][1]=x4;
    }
    void power(long long x[2][2],long long y[2][2],bigint&n)
    {
    	st(x);
    	st(D[0]);
    	long long t[2][2];
    	for(int i=1;i<10;i++)
    		multiple(D[i],D[i-1],y);
    	for(int i=0;i<n.len;i++)
    	{
    		multiple(x,x,D[n.d[i]]);
    		multiple(t,D[1],D[9]);
    		for(int i=1;i<10;i++)
    			multiple(D[i],D[i-1],t);
    	}
    }
    void minus1(bigint&x)
    {
    	int temp=0;
    	x.d[0]--;
    	for(int i=0;i<x.len;i++)
    	{
    		x.d[i]-=temp;
    		if(x.d[i]<0)
    		{
    			temp=1;
    			x.d[i]+=10;
    		}
    		else return;
    	}
    	if(!x.d[x.len-1])
    		x.len--;
    }
    int main()
    {
    //	scanf("%s %s %d %d %d %d", s1, s2, &a, &b, &c, &d);
        //freopen()
    	ios::sync_with_stdio(false); 
    	cin>>s1>>s2>>a>>b>>c>>d;
    	n.len=s1.length();
    	for(int i=n.len-1;i>=0;i--)
    		n.d[n.len-i-1]=s1[i]-'0';
    	m.len=s2.length();
    	for(int i=m.len-1;i>=0;i--)
    		m.d[m.len-i-1]=s2[i]-'0';	
    	A[0][0]=a;
    	A[0][1]=b;
    	A[1][0]=0;
    	A[1][1]=1;
    	C[0][0]=c;
    	C[0][1]=d;
    	C[1][0]=0;
    	C[1][1]=1;
    	minus1(m);
    	power(x,A,m);
    	multiple(y,C,x);
    	minus1(n);
    	power(z,y,n);
    	multiple(y,x,z);
    	cout<<(y[0][0]+y[0][1])%p;
    	return 0;
    }


    展开全文
  • 这个权值是一个常数αα除以αα与该词语频率的和,也就是说高频词的权值会相对下降。求和后得到暂时的句向量。 然后计算语料库所有句向量构成的矩阵的第一个主成分uu,让每个句向量减去它在uu上的投影(类似PCA)...

    源码地址

    https://github.com/PrincetonML/SIF

    1.目的

    创建句向量

    2.方法

    论文地址:

    第一步,对句子中的每个词向量,乘以一个独特的权值。这个权值是一个常数αα除以αα与该词语频率的和,也就是说高频词的权值会相对下降。求和后得到暂时的句向量。

    然后计算语料库所有句向量构成的矩阵的第一个主成分uu,让每个句向量减去它在uu上的投影(类似PCA)。

     

     

    展开全文
  • MATLAB常用操作大全

    2015-07-23 16:16:46
    点除,a.\b表示矩阵b的每元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每元素或者矩阵a除以矩阵b对应元素或者常数b 点乘方a.^b,矩阵a中每元素按b中对应元素乘方或者b是常数 2.矩阵中元素的...
    1.点乘,点除,点乘方
    

    点乘(对应元素相乘),必须同维或者其中一个是标量,a.*b

    点除,a.\b表示矩阵b的每个元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每个元素或者矩阵a除以矩阵b对应元素或者常数b

    点乘方a.^b,矩阵a中每个元素按b中对应元素乘方或者b是常数

    2.矩阵中元素的操作

    矩阵a中第r行,a(r,:),

    第r列,a(:,r),

    依次提取每一列组成一个列向量a(:),

    提取子矩阵第i到j行和第k到t列a(i:j,k:t)

    可以通过下标引用,但是元素下标从1开始, 也可通过序号引用,但是按列存储,也就是说对于3*3的矩阵a,a(4)是a(1,2)不是a(2,1)

    3.求极限

    syms x;

    f表达式

    limit(f,0)//表示x趋于0时的极限

    4.因式分解

    syms x

    factor(表达式)

    5.求积分

    syms x

    y = x^2 + 2

    int(y,3,4)//在区间3到4求积分

    或者

    quad('sin(x)',4,6) %必加引号

    5 . 求n阶导数

    diff(函数表达式,阶数n)//注意并不是在x = n时的一阶导数值

    6.解一元方程

    syms x

     y = X^3 - 1//y必须是个式子,也就是说x必须是符号变量不可是具体的数,否则一直空解

    solve(y)

    或者

    求方程 3x4+7x3 +9x2-23=0的全部根。

    p=[3,7,9,0,-23];        %建立多项式系数向量

    x=roots(p)               %求根

    7.whos用于显示驻留在工作区内的变量的详细信息,采用clear 变量名把该变量清理出内存

    8.linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。

    9.size(矩阵名),输出行数和列数,比如产生和矩阵a同维的全一阵,ones(size(a))

    10.常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。

       一.常用特殊阵

    建立随机矩阵:

    (1) 在区间[20,50]内均匀分布的5阶随机矩阵。

    (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。

    命令如下: x=20+(50-20)*rand(5)

    y=0.6+sqrt(0.1)*randn(5)

    此外,常用的函数还有reshape(A,m,n),它在矩阵总元素个数保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

    例如,行向量:
    a = [1 2 3 4 5 6]

    执行下面语句把它变成3行2列:
    b = reshape(a,3,2)

    执行结果:
    b =
    1 4
    2 5
    3 6

    在使用reshape时一定要注意的是变换前后矩阵的总元素个数和值不变。

       二.用于专门学科的特殊矩阵

     (1) 魔方矩阵

    魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。

    对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。

    将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。

    M=100+magic(5)

    可知:n阶普通魔方阵的常数值是n(n^2+1)/2(1加到n^2再除以n)。

     (2) 范得蒙矩阵

    范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列(即从第三列开始)是其后列与倒数第二列的点乘积即倒数第二列的次方。

    可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。

    例如,A=vander([1;2;3;5])即可得到上述范得蒙矩阵。

    (3) 希尔伯特矩阵

    Hilbert matrix,矩阵的一种,其元素为1/(i+j-1),ij分别为其行标和列标。

      即:

      [1,1/2,1/3,……,1/n]

      |1/2,1/3,1/4,……,1/(n+1)|

      |1/3,1/4,1/5,……,1/(n+2)|

      ……

      [1/n,1/(n+1),1/(n+2),……,1/(2n-1)]

      希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。

    在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。 使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。

    因为希尔伯特矩阵已经规定好了,因此hilb和invhilb只有一个参数即阶数。

    format rat     %以有理形式输出,即循环小数表示成分数

    (4) 托普利兹矩阵

    托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。即主对角线上的元素相等,平行于主对角线的线上的元素也相等。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,两者不必等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。例如   T=toeplitz(1:6).

     (5) 伴随矩阵

    MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。

    例如,为了求多项式的x3-7x+6的伴随矩阵,可使用命令: p=[1,0,-7,6];

    compan(p)

    看了好多的书,都把compan()函数翻译成求伴随矩阵或友矩阵,可是你用它的时候你会

    发现,compan()函数的输入只能是一个向量(vector),而不能是一个矩阵(matrix),

    所以我觉得它不能称为真正的求伴随矩阵的函数。不过,我们可以利用高等数学上的伴随

    矩阵和逆矩阵的关系来求逆矩阵,像这样:

    1 function J=companymatrix(A)
    2 if det(A)~=0%det是求行列式的值
    3      J=inv(A)*det(A);
    4 else
    5      fprintf('|A|=0\n');
    6      J=pinv(A)*det(A);
    7 end

    (6) 帕斯卡矩阵

    我们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。

    由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。

    函数pascal(n)生成一个n阶帕斯卡矩阵。

    求(x+y)5的展开式。

    在MATLAB命令窗口,输入命令: pascal(6)

    矩阵次对角线上的元素1,5,10,10,5,1即为展开式的系数。

    11.矩阵分析

       11.1 对角阵 只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为1的对角矩阵称为单位矩阵。

    diag(a),提取矩阵a的对角线元素组成列向量。

    先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。

    A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;... 11,18,25,2,19];

    D=diag(1:5);

    D*A  %用D左乘A,对A的每行乘以一个指定常数

       11.2三角阵

    triu及tril

      11.3矩阵转置

    a'共轭转置,a.'为普通矩阵转置(并不是顺时针旋转90),rot90(a)表示逆时针旋转90

       11.4矩阵的翻转

    对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。

    MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。

    矩阵的上下翻转 MATLAB对矩阵A实施上下翻转的函数是flipud(A)。

       11.5方阵的行列式

    把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。

       11.6矩阵的秩与迹

    1.矩阵的秩 矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。

    2.矩阵的迹 矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。

       11.7向量和矩阵的范数

    向量的3种常用范数及其计算函数

    在MATLAB中,求向量范数的函数为:

    (1) norm(V)或norm(V,2):计算向量V的2—范数。

    (2) norm(V,1):计算向量V的1—范数。

    (3) norm(V,inf):计算向量V的∞—范数。

     

    在MATLAB中,计算矩阵A的3种条件数的函数是:

    (1) cond(A,1)   计算A的1—范数下的条件数。

    (2) cond(A)或cond(A,2)   计算A的2—范数数下的条件数。

    (3) cond(A,inf)   计算A的 ∞—范数下的条件数。

       11.8矩阵的特征值与特征向量

    在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:

    (1) E=eig(A):求矩阵A的全部特征值,构成向量E。

    (2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

    (3) [V,D]=eig(A,‘nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。

       11.9

     

    关系运算    

    MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

    它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。

    a = b表示把b赋值给同维的矩阵a

     

     

    关系运算符的运算法则为:    

    (1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。    

    (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。

    最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

    当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。

    最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

    产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。    

    (1) 生成5阶随机方阵A。 A=fix((90-10+1)*rand(5)+10)    

    (2) 判断A的元素是否可以被3整除。

    P=rem(A,3)==0 其中,rem(A,3)是矩阵A的每个元素除以3的余数矩阵。

    此时,0被扩展为与A同维数的零矩阵,P是进行等于(==)比较的结果矩阵。

     

     

    建立矩阵A,然后找出大于4的元素的位置。

    (1) 建立矩阵A。 A=[4,-65,-54,0,6;56,0,67,-45,0]

    (2) 找出大于4的元素的位置。 find(A>4)

     

    12.

      solve是符号解(解析解),roots是数值解 用求特征值的方法解方程。

    3x5-7x4+5x2+2x-18=0 p=[3,-7,0,5,2,-18];

    A=compan(p);           %A的伴随矩阵

    x1=eig(A)              %求A的特征值

    x2=roots(p)                 %直接求多项式p的零点

    矩阵的超越函数

    1.矩阵平方根sqrtm sqrtm(A)计算矩阵A的平方根。

     2.矩阵对数logm logm(A)计算矩阵A的自然对数。

    此函数输入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样

    矩阵指数expm、expm1、expm2、expm3 expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩阵指数eA。

    4.普通矩阵函数funm funm(A,‘fun’)用来计算直接作用于矩阵A的由‘fun’指定的超越函数值。当fun取sqrt时,funm(A,‘sqrt’)可以计算矩阵A的平方根,与sqrtm(A)的计算结果一样。

    13.自然对数相关

    exp,即自然对数表示为exp(x)。
    log(X) %自然对数
    log2(X) %以2为底
    log10(X) %以10为底

    14.多项式乘除法
    1  p1=conv([1,0,2],conv([1,4],[1,1]));  %conv表示多项式相乘
    2 p2=[1 0 1 1];  
    3 [q,r]=deconv(p1,p2); 
    4 cq='商多项式为  '; cr='余多项式为  '; %disp为屏幕输出函数
    5 disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')]) % poly2str表示生成多项式

    商多项式为     s + 5
    余多项式为     5 s^2 + 4 s + 3

    15.

    polyval(p,x)计算在X中任意元素处的多项式p的估值。 

    poly(A)求矩阵的特征多项式。

    [d,v] = eig(A)其中d是矩阵的特征向量,V是特征值。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • MATLAB常用操作

    2014-05-27 22:49:00
    1.点乘,点除,点乘方点乘(对应元素相乘),必须同维或者其中一个是标量,a.*b点除,a.\b表示矩阵b的每个元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每个元素或者矩阵a除以矩阵b对应元素或者常数b点...
  • matlab常用操作

    2018-12-05 20:53:43
    点除,a.\b表示矩阵b的每元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每元素或者矩阵a除以矩阵b对应元素或者常数b 点乘方a.^b,矩阵a中每元素按b中对应元素乘方或者b是...
  • Matlab求极限

    千次阅读 2015-05-15 15:09:00
    matlab求极限(可用来验证度量函数或者隶属度函数)可用来验证是否收敛,取值范围等等。... a./b表示常数a除以矩阵b中每元素或者矩阵a除以矩阵b对应元素或者常数b;点乘方a.^b,矩阵a中每元素按b...
  • matlab的初等函数运用

    2021-05-22 22:15:14
    除以一个矩阵即是乘该矩阵的逆矩阵,若无逆矩阵即是有无数解 矩阵与一个常数的大小进行判断,返回的是逻辑数组 if函数等一定要用end结尾,函数用end结尾显得更加正式 一些简单的索引方式A(2:end,:)第二行到...
  • c++){//找一个非零的数放在a[c][c]上,并交换此两行 for(d=c+1;d;d++){ if(a[c][c]==0){ for(e=c;e;e++){ f=a[e][c]; a[e][c]=a[e][d]; a[e][d]=f; } f=b[c]; b[c]=b[d]; b[d]=f; } if(a[c][c]!...
  • Gauss消去法求线性方程组

    千次阅读 2015-08-21 11:35:10
    2,交换后,主元所在的行每一个除以主元的值,使得主元所在的位置为1,常数列也除以主元的值。 3,进行初等行变换,使得主元所在的列的其他元为0。 4,判断系数矩阵和增广矩阵的秩是否相同,相同,有解,不相同...
  • 一个多项式里面只有平方项和交叉项 例如:x12+2x1x2+x32x_1^2+2x_1x_2+x_3^2x12​+2x1​x2​+x32​ 有常数项就一定不是二次型了 已知二次型,写出矩阵表达式 例如:x12+2x1x2+x22−x2x3+3x32−2x1x3x_1^{2}+2x_1x_2...
  • 注意j是重1开始的,因为theta(0)为一个常数项,X中最前面一列会加上1列1,所以乘积还是theta(0),feature没有关系,没有必要正则化 正则化后的代价: # 代价函数 def costFunction(initial_theta,X,y,inital_lambda)...
  • 3.2 调整到上一个/下一个2的幂 57 3.2.1 向下舍入 58 3.2.2 向上舍入 59 3.3 判断取值范围是否跨越了2的幂边界 59 3.4 习题 61 第4章 算术边界 63 4.1 检测整数边界 63 4.2 通过加减法传播边界 65 4.3 通过...
  • LINGO软件的学习

    2009-08-08 22:36:50
    LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。...一个对象列中至多有一个集名,而属性...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

一个矩阵除以一个常数