精华内容
下载资源
问答
  • MATLAB求解矩阵函数

    千次阅读 2020-11-16 16:29:16
    MATLAB求解矩阵函数0....第 3 节演示了什么不能用普通的运算函数矩阵函数。 第 4 节介绍了MATLAB内置的矩阵函数求解函数。 如果赶时间,直接看第 4 节即可!!! 1. 矩阵函数介绍 直接查看百度百科吧,我也说

    0. 说明

    这里的 1-2 节涉及到矩阵函数的一般求法。

    第 3 节演示了为什么不能用普通的运算函数求矩阵函数。

    第 4 节介绍了MATLAB内置的矩阵函数求解函数。

    如果赶时间,直接看第 4 节即可!!!

    1. 矩阵函数介绍

    直接查看百度百科吧,我也说不太清楚:矩阵函数

    总的来说,矩阵函数的求解方式和一般的标量方式不一样。

    常用的矩阵函数有:

    1. exp(A)
    2. log(A)
    3. sin(A)
    4. cos(A)
    5. sinh(A)
    6. cosh(A)

    MATLAB内置的求解方案也只能求解这6类矩阵函数

    2. 矩阵函数求解方法

    2.1 例子介绍

    这里以矩阵:在这里插入图片描述

    为例,求解其矩阵函数 sinA。求解方案在百度百科里面有两种。

    2.2 jordan标准型法

    1. 求出A的jordan标准型 J 和伴随矩阵 P
      在这里插入图片描述
      可以看到其特征值 λ1 = λ2 = λ3 = 2;

    2. 计算需要的标量函数值

    我们的函数是 f(z)=sinz。根据jordan矩阵和特征值,我们知道需要 f(2) 和 f‘(2)来构造f(J).

    在这里插入图片描述

    1. 根据公式构造 f(J)
      在这里插入图片描述
    2. 根据 f(J) 和 P 计算矩阵函数
      在这里插入图片描述

    2.3 最小多项式法

    1. 求矩阵的最小多项式
      在这里插入图片描述
      可以看到,最小多项式为 m=x²-4x+4=(x-2)²,有两个相同的特征根。

    2. 计算需要的标量函数值

    我们的函数是 f(z)=sinz,根据定理需要计算 f(2) 和 f’(2),和上面jordan求法相同。
    在这里插入图片描述

    1. 计算构造量C0和C1

    令 g(λ) = C0+C1*λ (根据定理,f 与之相同)

    则,f(2)=g(2)=C0+2C1 f’(2)=g’(2)=C1;

    f(2)和f’(2)上文已经求出,所以由此可以解出C0和C1:
    在这里插入图片描述

    1. 根据定理直接构造 f(A)

    很简单,f(A)=C0I+C1A,如下:
    在这里插入图片描述

    2.4 两种方法计算结果相同

    3. 一般矩阵运算函数不可用

    刚开始我以为MATLAB普通的运算符会直接为我们计算矩阵函数,实际上并不是这样。

    我们的例子是 sin(A),这里试一下:
    在这里插入图片描述
    显然,这里是直接对每个元素求sin,不符合我们的要求。

    4. 矩阵函数求解函数funm()

    步入正题。这里才是MATLAB内置的函数矩阵的求解函数:funm()

    官方文档介绍如下:
    在这里插入图片描述
    意味着可以计算常用函数的矩阵函数,调用形式也比较清楚。

    我们将其应用到我们的例子中,得到了正确结果:
    在这里插入图片描述
    注:求exp和log也有专有的expm和logm函数,效果和funm一样。

    5. 多多点赞关注,多多交流

    展开全文
  • MATLAB矩阵运算函数

    千次阅读 2020-08-09 15:52:29
    3.以向量V对主对角线元素,产生对角矩阵:diag(V) 4.以向量V第k条对角线元素,产生对角矩阵:diag(V,K) (对角线以上正,对角线0,对角线一下负) 二.三角阵 1.上三角: triu(A):提取主对角线以上的...

    一.对角阵

    1.提取矩阵的主对角线上的元素,形成一个列向量:diag(A)

    2.提取矩阵第k条对角线的元素,产生一个列向量:diag(A,K)

    3.以向量V为对主对角线元素,产生对角矩阵:diag(V)

    4.以向量V为第k条对角线元素,产生对角矩阵:diag(V,K)

    (对角线以上为正,对角线为0,对角线一下为负)

    二.三角阵

    1.上三角:

    triu(A):提取主对角线以上的元素

    trui(A,K):提取第k对角线以上的元素

    2.下三角:

    tril(A):原理同上,提取后剩余的部分用0填充,组成和原来一样规模的矩阵。

    三.矩阵的转置

    1.

    四.矩阵的旋转

    rot90(A,K)将矩阵A逆时针旋转90度的k倍。

    五.矩阵的翻转

    1.左右翻转:fliplr(A)

    第一列与最后一列对换,其他的依次类推。

    2.上下翻转:flipud(A)

    上下交换。

    六.矩阵求逆

    使得矩阵A,B;AB=BA=I

    Inv(A)求方阵的逆矩阵;

    七.矩阵的行列式

    |A|:det(A):det(A负一次方)=1/det(A)

    八.矩阵的迹

    trace(A)

    九.矩阵的秩

    rank(A)

    十.向量和矩阵的范数

    向量1--范数:向量元素的绝对值

    \left \| V \right \|_{1}=\sum_{i=1}^{n}\left | v_{i} \right |

    norm[V,1];

    向量2--范数:向量元素的平方和的平方根

    \left \| V \right \|_{2}=\sqrt{\sum_{i=1}^{n}}v_{i}^{2}

    norm[V]或norm[V,2];

    向量无穷--范数:所有向量元素绝对值中的最大值

    \left \| V \right \|_{\infty }=\max_{1\leqslant i\leqslant n}\left \{ \left | v_{i} \right | \right \}

    norm[V,inf];

    十一.矩阵的条件数

    矩阵的条件数等于A的范数与A的逆矩阵的范数的乘积;

    条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。

    cond[A,1];

    cond[A]或cond[A,2];

    cond[A,inf];

    十二.矩阵的特征向量值和特征向量

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

    [X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D’,并产生矩阵X,X各列是相应的特征向量。

    十三.稀疏矩阵

    A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。

    S=full(A):将矩阵A转化为完全存储方式的矩阵S。

    [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非0对角线元素赋给矩阵B及其这些非0对角线的位置向量d/

    A=spdiags[B,d,m,n]:产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数于列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非0对角线,向量d为原带状稀疏矩阵所有非0对角线位置。

    展开全文
  • 这是一个利用MATLAB符号函数功能,通过手动输入DH参数符号矩阵 or Excel文件导入DH参数表从而获得DH矩阵函数代码。通过该代码获得的DH矩阵不仅能够再次利用matlab计算所需变化矩阵,甚至还能将具体数值带入求得的...
  • Matlab系列之函数参数

    千次阅读 2020-07-11 19:48:30
    不知道你们是否有等待今天这篇的到来,这篇其中要讲到的函数参数,是个好东西,但是感觉初学的时候总会有点懵逼,希望你们能理解讲的东西,如果不理解,那就多看两遍吧,我也是这么学过来的,最近也在接受一下非电子...

    前言

    不知道你们是否有等待今天这篇的到来,这篇其中要讲到的函数参数,是个好东西,但是感觉初学的时候总会有点懵逼,希望你们能理解讲的东西,如果不理解,那就多看两遍吧,我也是这么学过来的,最近也在接受一下非电子类的培训,也是艰难的不行,感觉是真的去搬砖了一样,不过还是蛮有意思的,哈哈哈哈哈哈哈哈哈哈,开始进入今天的正题。

    确定函数参数数量

    当调用一个函数的时候,用到的输入和输出变量的数量在函数内部是确定好的,因此可用通过一个函数获得其个数,nargin函数就是用于确定输入变量个数,nargout显然就是用于确定输出变量个数的了,这两个理解起来就比较简单,直接搞个例程演示下效果就知道了,先创建一个函数,然后调用看结果。

    程序:

    %testarg1.m
    
    function c=testarg1(a,b)
    
    if(nargin==1)
    
    c=a.^2;
    
    elseif(nargin==2)
    
    c=a*b;
    
    end
    
    end

    结果:

    可以看到当输入变量单个时,会进入乘方的区间,输入变量为两个,则进入相乘的区间,输出的话由于这边一直只有一个,所以就不搞什么演示了,可以自己弄下玩玩,不懂使用的话,直接命令行窗口“help nargout”,也可以看下下个部分的程序,会用到这个函数做下判断。

     

    顺便教大家一个小技巧,如果代码编写好后,排版可能有点凌乱,可选中全部,然后按Ctrl+I,就会发现代码瞬间很有感觉了,当然这样也会有助于发现代码的错误,可以看下改变前后的效果,左边是原始的,右边是改变了的。

    传递可变数量的参数

    当你看到标题的时候,第一感觉是什么,是否有种拗口的感觉,反正我有这种感觉,学的时候,我也理解了蛮久,可能是那时候午觉还没睡醒,有点懵逼吧,哈哈哈哈哈哈哈哈。

    这部分要讲到的两个函数名字和刚刚的两个有点像,分别是varargin和varargout,这个的作用和名字一样,简单点讲,就是传递可变数量的变量给函数或者让函数返回可变数量的变量,在Matlab中,封装所有的输入变量为单元数组返回varargin,封装所有的输出变量也为单元数组并返回varargout,看到这介绍,不知道你是否理解了,我觉得这个讲得已经蛮清晰了,如果还没看懂,就重复看几遍,或者看下接下来的程序演示,再返回看这边的表述,你肯定能理解!

    程序:

    function [xmin,ymax]=testvar(varargin)
    
    for i=1:length(varargin)
    
        x(i)=varargin{i}(1);
    
        y(i)=varargin{i}(2);
    
    end
    
    xmin=min(x);
    
    ymax=max(y);
    
    end

    结果:

    从结果可以看到,输入了5个1行2列的矩阵给函数testvar,然后在调用函数的时候,将这5个输入的变量一起以单元数组的形式存入了varargin中,从函数内部代码对varargin的使用就可以看出,使用了花括号进行,x部分就是相当于每个输入的第1列,y就是每个输入的第2列,然后用取最小最大值的函数输出,这两个是MATLAB自带的函数,然后运行结果显然符合程序的功能。

    演示完了varargin,再来看看varragout,千万别把自己绕迷糊了,一定要记住,该种函数都是以单元数组的形式进行的。

    程序:

    function [varargout]=testvar2(In)
    
    for i=1:nargout
    
        varargout{i}=In(i,:);
    
    end
    
    end

    结果:

    程序的内容就是很简单的将输入的一个矩阵每一行都存入一个varargout,使用的方法就是先创建一个多维的矩阵,然后根据行数输入相同数量的输出变量,就是图中的p1~p5;结果也很明显,直接将5行数据分别输出到了各自的变量空间中。

     

    本篇到此也结束了,看到该文的你,是不是理解了呢?

    如果你是第一次看到这个,我想你可能会有点懵逼,或许连名字都会记不住,但是这都不重要,重要的是理解它要怎样用,能怎样用,有什么用就行了~

    路漫漫其修远兮,一起加油!



    欢迎关注~

     

    展开全文
  • Matlab 函数返回矩阵

    千次阅读 2016-10-08 13:12:00
    写function时,第一句写...程序体中,计算完需要输出的矩阵后,赋值给B矩阵即可。调用的时, B = yourFunction(parameters) 就可以得到输出的矩阵B。 Example : function I=test() for n=1:4 for k=1:4...

    写function时,第一句写成

    B = yourFuction(parameters)

    程序体中,计算完需要输出的矩阵后,赋值给B矩阵即可。调用的时,

    B = yourFunction(parameters)

    就可以得到输出的矩阵B。


    Example :

     
    function I=test()
    for n=1:4
    for k=1:4
    I(n,k)=cos((2*(n-1)+1)*(k-1)*pi)/8;
    end
    end
    end

    运行:

     
    >> test
    ans =
    0.1250 -0.1250 0.1250 -0.1250
    0.1250 -0.1250 0.1250 -0.1250
    0.1250 -0.1250 0.1250 -0.1250
    0.1250 -0.1250 0.1250 -0.1250

    转载于:https://www.cnblogs.com/laohaozi/p/8266608.html

    展开全文
  • MATLAB基础学习(五)-MATLAB矩阵介绍

    万次阅读 多人点赞 2018-09-14 10:19:28
    1.MATLAB赋值语句 (1)变量=表达式 (2)表达式 其中表达式是用运算符将有关运算量连接起来的式子...2.MATLAB矩阵 (2.1)矩阵的建立 直接输入法:最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方...
  • matlab矩阵运算相关函数

    千次阅读 2018-04-13 16:10:36
    1. MATLAB提供函数det()求方阵行列式的值>> A=[1 3 4;5 6 7;1 0 1]A = 1 3 4 5 6 ... MATLAB提供函数transpose()求矩阵的转置矩阵,也可以使用算术运算符“ ’”求矩阵的转置运算>&g...
  • 1.构造函数MWNumericArray(double rval, MWClassID classid)
  • 求传递函数矩阵 matlab实现

    千次阅读 2019-10-27 09:11:35
    最近在看清华大学的博士论文...要用到的公式来自现代控制理论的教材,一般现控书都会给出状态空间表达式到传递函数矩阵是如何推导的,所以就不说是哪一本了 。 matlab代码: clear all %/清空工作区 syms...
  • MATLAB计算常规矩阵函数 eAt sinA

    千次阅读 2020-12-28 13:06:52
    矩阵指数 计算和比较A的指数和A的矩阵指数。 A = [1 1 0; 0 0 2; 0 0 -1]; exp(A) ans = 3×3 2.7183 2.7183 1.0000 1.0000 1.0000 7.3891 1.0000 1.0000 0.3679 expm(A) ans = 3×3 2.7183 1.7183 1.0862...
  • matlab---矩阵运算函数

    千次阅读 2018-11-07 22:21:37
    matlab矩阵运算函数 矩阵的秩 任意一个矩阵都能通过初等行变换变成行阶梯形,这个行阶梯型所含非零行的行数就是矩阵的秩,矩阵的秩是矩阵的一个数字特征,是矩阵初等变换的一个不变的量,对于矩阵研究具有重要...
  • MATLAB对于矩阵函数的使用

    千次阅读 2019-08-31 14:35:41
    MATLAB对于矩阵的使用 1.单位矩阵 eye(n)生成n*n的单位矩阵 eye(n,m)生成n*m的单位矩阵 eye(size(B))生成与B同样大小的单位矩阵 2、全1矩阵 ones (n) 生成n*n的全1矩阵 ones (n,m) 生成n*m的全1矩阵 ones(size...
  • MATLAB函数速查手册

    千次阅读 多人点赞 2018-03-25 09:06:26
    MATLAB函数速查手册》较全面地介绍了MATLAB的函数,主要包括MATLAB操作基础、矩阵及其基本运算、与数值计算相关的基本函数、符号运算的函数、概率统计函数、绘图与图形处理函数、MATLAB程序设计相关函数、Simulink...
  • matlab-矩阵合并函数

    千次阅读 2020-05-10 10:07:04
    回忆贴 用几个例子看一下:
  • Matlab-计算协方差矩阵函数

    千次阅读 2018-09-07 15:02:32
    一、源码 function [ COVMAT ] = covarianceMatrix( ...% 这是一个计算协方差矩阵函数 % inputData 输入数据 % 每一行为一个维度 % 每一列为一个样本 %获得输入数据维度 [m,n] = size(inputData); %创建协...
  • matlab矩阵操作函数

    千次阅读 2019-03-03 16:42:03
    函数名称 描述 举例 生成矩阵: 直接输入 a=[1,2;1,2] 向量输入 x=x0: step: xn step根据x0和xn的大小决定是正或负... 创建全1矩阵,m行,n列 zeros(n);.......
  • matlab——zeros函数

    万次阅读 多人点赞 2019-10-19 11:40:29
    #matlab——zeros函数 ##功能 zeros函数用于创建一个全零的数组或矩阵 ##语法 B = zeros(n) B = zeros(m,n) B = zeros(m,n) B = zeros(d1,d2,d3…) B = zeros([d1 d2 d3…]) B = zeros(size(A)) zeros(m, n,…,...
  • 实例2:创建一个矩阵并计算矩阵每列元素的总和 实例3:创建一个矩阵并计算矩阵每行元素的总和 实例4:创建一个三维数组并计算数组特定切片元素(维度1*维度2)的总和 实例5:创建一个三维数组并计算数组特定切片...
  • 如何使用matlab实现分段函数

    万次阅读 多人点赞 2018-10-09 20:39:13
    实现如下的分段函数: m={t0≤t<1−t+21<t≤20.1其他 m=\left\{ \begin{array}{rcl} t & & {0 \leq t <1}...
  • 自学MATLAB(一):特殊矩阵构造函数 ones(n)函数:构建一个n x n的1矩阵 ones(n,m,…,p)函数:构建一个n x m x…p的1矩阵 ones(size(A)):构建一个***A***矩阵大小的1矩阵 zeros(n),ze...
  • 对图像进行不同的块处理 句法 B = blockproc(A,[m n],fun) B = blockproc(src_filename,[m n],fun) ...A是要处理的图像矩阵,如果图像太大不能完全导入内存,也可以用图像文件名src_filename来表示。[M...
  • matlab的input函数总结

    万次阅读 多人点赞 2019-02-20 15:49:52
    input函数 官方文档在这里,我知道你也不会去看点击这里直接插入官方hard core文档 其实说白了,和基本上所有语言都是一样的,语法就是下面这样 x = input(prompt) %输入的东西当成数字或者矩阵 str = input(prompt,...
  • matlab函数定义详解

    万次阅读 2014-06-28 16:23:49
    但凡经过编程熏陶的人,在学习其他一门陌生的编程语言时,往往会与已经学过的语言相比较。...在matlab中,则对应输入参数,输出参数函数体。实际上,matlab支持多输入多输出,函数的返回值可以
  • matlab矩阵转置函数

    万次阅读 2017-11-29 00:50:37
    对已知矩阵A,MATLAB为我们提供了两种转置运算。 A.' 非共轭转置 A' 共轭转置 当A矩阵时,两者相同 单纯地共轭用:conj() 单纯的转置用:transpose()  example:    a =   12.0000  0 + 2.0000i  5....
  • MATLAB矩阵生成

    万次阅读 多人点赞 2017-01-10 16:23:00
    MATLAB矩阵生成
  • matlab计算矩阵指数函数的三种方法

    千次阅读 2020-08-22 16:15:47
    简要介绍matlab计算矩阵指数函数的三种方法 方法1:Pade法 function E = expmdemo1(A) % EXPMDEMO1 Matrix exponential via Pade approximation. % E = EXPMDEMO1(A) is a MATLAB implementation of the built-in %...
  • dim1Dist分割后矩阵行数组成的向量,dimNDist指的是分割后矩阵列数组成的向量 例有100*200的矩阵A >> A=rand(100,200); >> b=mat2cell(A,[30 40 30],[100 70 30]) b = 3×3 cell 数组 {30×100 ...
  • 使用Matlab矩阵指数函数e^At和矩阵A

    千次阅读 2019-10-12 14:12:40
    参考链接: https://ww2.mathworks.cn/help/matlab/ref/expm.html?searchHighlight=expm&s_tid=doc_srchtitle ...使用到的函数为expm 矩阵指数 语法 Y = expm(X) 说明 Y = expm (X) 计算 X 的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,309
精华内容 26,123
关键字:

matlab函数参数为矩阵

matlab 订阅