精华内容
下载资源
问答
  • Matlab中的条件数

    千次阅读 2013-10-20 16:43:03
    1、矩阵的条件数是判断矩阵“病态”程度的一个指标。  若矩阵的条件数越大,则表明矩阵的病态越严重;反而就是呈现出良态 2、矩阵的条件数函数 (1)cond函数 求矩阵二范式条件数 (2)condest函数 求矩阵一...

    1、矩阵的条件数是判断矩阵“病态”程度的一个指标。

          若矩阵的条件数越大,则表明矩阵的病态越严重;反而就是呈现出良态

    2、矩阵的条件数函数

    (1)cond函数                求矩阵二范式条件数

    (2)condest函数           求矩阵一范式条件数

    (3)rcond函数              求矩阵条件数的倒数

    3、实例

    >> m = magic(3)
    
    m =
    
         8     1     6
         3     5     7
         4     9     2
    
    >> h = hilb(4)
    
    h =
    
        1.0000    0.5000    0.3333    0.2500
        0.5000    0.3333    0.2500    0.2000
        0.3333    0.2500    0.2000    0.1667
        0.2500    0.2000    0.1667    0.1429
    
    >> a = cond(m)
    
    a =
    
        4.3301
    
    >> b = condest(m)
    
    b =
    
        5.3333
    
    >> c = rcond(m)
    
    c =
    
        0.1875
    
    >> d = cond(h)
    
    d =
    
       1.5514e+04
    
    >> e = condest(h)
    
    e =
    
       2.8375e+04
    
    >> f = rcond(h)
    
    f =
    
       3.5242e-05



    展开全文
  • 本文是对 Matlab 中 polyfit 函数进行原理解析,并没介绍该如何...相对详细介绍了线性方程组求解的稳定性问题,并引出条件数的定义。最后根据 polyfit 的源码对它进行计算流程解析,并分析相关的警告该如何处理。预...
    • 本文是对 Matlab 中 polyfit 函数进行原理解析,并没介绍该如何具体使用 polyfit 函数,具体方法请自行查阅官方文档。
    • 主要涉及数值分析的相关内容。
    • 简单介绍了数据标准化(Z-score 标准化)、QR 分解、Matlab 中的求逆运算符。
    • 相对详细介绍了线性方程组求解的稳定性问题,并引出条件数的定义。
    • 最后根据 polyfit 的源码对它进行计算流程解析,并分析相关的警告该如何处理。

    预备知识

    标准化

    对向量

    equation?tex=%5Cboldsymbol%7Bx%7D 进行标准化(Standardization,Z-score normalization)定义如下:

    equation?tex=%5Cboldsymbol%7Bx%7D%27%3D%5Cfrac%7B%5Cboldsymbol%7Bx%7D-%5Cbar%7B%5Cboldsymbol%7Bx%7D%7D%7D%7B%5Csigma%7D%5C%5C

    其中

    equation?tex=%5Cbar%7B%5Cboldsymbol%7Bx%7D%7D 表示
    equation?tex=%5Cboldsymbol%7Bx%7D 的均值,即
    equation?tex=%5Cbar%7B%5Cboldsymbol%7Bx%7D%7D%3D%5Ctext%7Bmean%7D%28x%29
    equation?tex=%5Csigma 表示标准差,即
    equation?tex=%5Csigma%3D%5Ctext%7Bstd%7D%28x%29
    • equation?tex=%5Cboldsymbol%7Bx%7D%27
      标准分数(standard score)也叫 Z分数(Z-score);
    • Z分数表示原始数据与平均值的差,单位为标准差,也就时给定值距离均值多少个标准差。

    QR 分解定理

    equation?tex=A
    equation?tex=n 阶实非奇异矩阵,则存在正交矩阵
    equation?tex=Q 和上三角矩阵
    equation?tex=R 使得
    equation?tex=A%3DQR ,当
    equation?tex=R 的对角元均为正时,分解唯一。

    注:正交矩阵

    equation?tex=Q%5E%7BT%7D%3DQ%5E%7B-1%7D%5CLeftrightarrow+Q%5E%7BT%7DQ%3DQQ%5E%7BT%7D%3DI

    求逆运算

    Y = inv(X) 计算方阵

    equation?tex=X 的逆矩阵。
    • X^(-1) 等效于 inv(X)
    • x = Ab 的计算方式与 x = inv(A)*b 不同,建议用于求解线性方程组。

    方程组求解的稳定性

    设线性方程组

    equation?tex=Ax%3Db ,其中
    equation?tex=b 有小扰动
    equation?tex=b%2B%5CDelta+b ,得到解
    equation?tex=%5Ctilde%7Bx%7D%3Dx%2B%5CDelta+x ,那么:

    equation?tex=%5Cbegin%7Bsplit%7D++A%28x%2B%5CDelta+x%29%26%3Db%2B%5CDelta+b%5C%5C++A%5CDelta+x%26%3D%5CDelta+b%5C%5C++%5CDelta+x%26%3DA%5E%7B-1%7D%5CDelta+b++%5Cend%7Bsplit%7D%5C%5C

    equation?tex=%5C%7Cb%5C%7C%3D%5C%7CAx%5C%7C%5Cleq%5C%7CA%5C%7C%5Ccdot+%5C%7Cx%5C%7C ,可得
    equation?tex=%5C%7C%5CDelta+x%5C%7C%5Cleq+%5C%7CA%5E%7B-1%7D%5C%7C%5Ccdot+%5C%7C%5CDelta+b%5C%7C

    考虑相对误差:

    equation?tex=%5Cfrac%7B%5C%7C%5CDelta+x%5C%7C%7D%7B%5C%7Cx%5C%7C%7D%5Cleq+%5Cfrac%7B%5C%7C%5CDelta+x%5C%7C%7D%7B%5C%7Cb%5C%7C%2F%5C%7CA%5C%7C%7D%3D%5Cfrac%7B%5C%7CA%5C%7C%7D%7B%5C%7Cb%5C%7C%7D%5Ccdot+%5C%7C%5CDelta+x%5C%7C%5Cleq+%5Cfrac%7B%5C%7CA%5C%7C%7D%7B%5C%7Cb%5C%7C%7D%5Ccdot+%5C%7CA%5E%7B-1%7D%5C%7C%5Ccdot+%5C%7C%5CDelta+b%5C%7C%3D%5C%7CA%5C%7C%5Ccdot+%5C%7CA%5E%7B-1%7D%5C%7C%5Cfrac%7B%5C%7C%5CDelta+b%5C%7C%7D%7B%5C%7Cb%5C%7C%7D%5C%5C

    equation?tex=%5Cfrac%7B%5C%7C%5CDelta+x%5C%7C%7D%7B%5C%7Cx%5C%7C%7D%5Cleq+%5C%7CA%5C%7C%5Ccdot+%5C%7CA%5E%7B-1%7D%5C%7C%5Cfrac%7B%5C%7C%5CDelta+b%5C%7C%7D%7B%5C%7Cb%5C%7C%7D%5C%5C

    条件数

    • equation?tex=%5Ctext%7Bcond%7D%28A%29%5Ctriangleq+%5C%7CA%5C%7C%5Ccdot+%5C%7CA%5E%7B-1%7D%5C%7C
      equation?tex=A 的条件数;
    • 表示
      equation?tex=b 变化时解的相对误差灵敏度的度量;
    • equation?tex=%5Ctext%7Bcond%7D%28A%29 较小时,解对
      equation?tex=A 的扰动不敏感。

    注:

    equation?tex=%5C%7C%5Ccdot%5C%7C 表示矩阵范数,满足正定性、齐次性以及三角不等式。常见的范数定义有:
    • equation?tex=%5C%7C%5Cboldsymbol%7Bx%7D%5C%7C_1%3D%5Csum%5En%7Bi%3D1%7D%7Cx_i%7C
    • equation?tex=%5C%7C%5Cboldsymbol%7Bx%7D%5C%7C2%3D%28%5Csum%5En%7Bi%3D1%7D%7Cx_i%7C%5E2%29%5E%7B%5Cfrac%7B1%7D%7B2%7D%7D
    • equation?tex=%5C%7C%5Cboldsymbol%7Bx%7D%5C%7C_%5Cinfty%3D%5Cmax%7B%7Cx_1%7C%2C%7Cx_2%7C%2C%5Ccdots%2C+%7Cx_n%7C%7D

    polyfit 函数原理

    polyfit 使用一维向量

    equation?tex=%5Cboldsymbol%7Bx%7D 构造具有
    equation?tex=n%2B1 列和
    m = length(x) 行的范德蒙(Vandermonde)矩阵
    equation?tex=V (见源码55-59行)并生成线性方程组:

    51398a7d758ca64a64fff567f21d9fc3.png

    拟合多项式

    equation?tex=p%28x%29%3Dp_1x%5En%2Bp_2x%5E%7Bn%E2%88%921%7D%2B...%2Bp_nx%2Bp_%7Bn%2B1%7D 转换为求解线性方程组(2)(非上述方程组),具体地,
    polyfit 先对
    equation?tex=V 进行
    QR分解,然后再使用反斜杠运算进行求解(见源码61-69行)。

    具体过程如下:

    equation?tex=%5Cbegin%7Bsplit%7D++Vp%26%3Dy+%5Cquad%5Cquad%5Cquad%5C%3B+%281%29%5C%5C++%5CLongleftrightarrow+QRp%26%3Dy%5C%5C+%5CLongleftrightarrow+Rp%26%3DQ%5ETy%5Cquad%5Cquad+%282%29%5C%5C+%5CLongleftrightarrow+p%26%3DR%5E%7B-1%7DQ%5ETy++%5Cend%7Bsplit%7D%5C%5C 转化为 Matlab 运算即为
    p = R(Q'*y)

    异常处理逻辑

    共以下4种情况

    • MATLAB:polyfit:XYSizeMismatch
    • MATLAB:polyfit:PolyNotUnique
    • MATLAB:polyfit:RepeatedPoints
    • MATLAB:polyfit:RepeatedPointsOrRescale

    输入判断

    • polyfit函数只用于拟合(x,y)型二维数据,因此输入数据应是两两对应的,即向量
      equation?tex=%5Cboldsymbol%7Bx%7D%2C%5Cboldsymbol%7By%7D 长度相等(见源码43-45行)。
    • 若提示MATLAB:polyfit:XYSizeMismatch,请检查上述问题。

    欠定方程

    • 若提示MATLAB:polyfit:PolyNotUnique 表示线性方程组
      equation?tex=Rp%3DQ%5ETy 欠定(矩阵
      equation?tex=R 的列数大于行数)

    考虑

    1. 添加更多的不同的拟合点;
    2. 减少多项式的次数.

    条件数过大

    由于 Vandermonde 矩阵中的列是向量

    equation?tex=%5Cboldsymbol%7Bx%7D 的幂,因此
    equation?tex=V
    条件数对于高阶拟合来说通常较大,生成一个奇异系数矩阵。在这些情况下,中心化和缩放可改善系统的数值属性以产生更可靠的拟合。而数据的标准化由函数调用时输出情况决定,当且仅当调用[P,S,MU] = POLYFIT(X,Y,N) 才执行数据标准化(见源码50-53行)。

    equation?tex=%5Ctext%7Bcond%7D%28R%29 过大时才会提示以下其中一个警告:
    • 若提示 MATLAB:polyfit:RepeatedPoints,考虑添加更多的不同的拟合点
    • 若提示 MATLAB:polyfit:RepeatedPointsOrRescale,考虑1、添加更多的不同的拟合点;2、减少多项式的次数

    源码阅读

    function [p,S,mu] = polyfit(x,y,n)
    %POLYFIT Fit polynomial to data.
    %   P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of
    %   degree N that fits the data Y best in a least-squares sense. P is a
    %   row vector of length N+1 containing the polynomial coefficients in
    %   descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).
    %
    %   [P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a
    %   structure S for use with POLYVAL to obtain error estimates for
    %   predictions.  S contains fields for the triangular factor (R) from a QR
    %   decomposition of the Vandermonde matrix of X, the degrees of freedom
    %   (df), and the norm of the residuals (normr).  If the data Y are random,
    %   an estimate of the covariance matrix of P is (Rinv*Rinv')*normr^2/df,
    %   where Rinv is the inverse of R.
    %
    %   [P,S,MU] = POLYFIT(X,Y,N) finds the coefficients of a polynomial in
    %   XHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X). This
    %   centering and scaling transformation improves the numerical properties
    %   of both the polynomial and the fitting algorithm.
    %
    %   Warning messages result if N is >= length(X), if X has repeated, or
    %   nearly repeated, points, or if X might need centering and scaling.
    %
    %   Example: simple linear regression with polyfit
    %
    %     % Fit a polynomial p of degree 1 to the (x,y) data:
    %       x = 1:50;
    %       y = -0.3*x + 2*randn(1,50);
    %       p = polyfit(x,y,1);
    %
    %     % Evaluate the fitted polynomial p and plot:
    %       f = polyval(p,x);
    %       plot(x,y,'o',x,f,'-')
    %       legend('data','linear fit')
    %
    %   Class support for inputs X,Y:
    %      float: double, single
    %
    %   See also POLY, POLYVAL, ROOTS, LSCOV.
    
    %   Copyright 1984-2018 The MathWorks, Inc.
    
    if ~isequal(size(x),size(y))
        error(message('MATLAB:polyfit:XYSizeMismatch'))
    end
    
    x = x(:);
    y = y(:);
    
    if nargout > 2
        mu = [mean(x); std(x)];
        x = (x - mu(1))/mu(2);
    end
    
    % Construct the Vandermonde matrix V = [x.^n ... x.^2 x ones(size(x))]
    V(:,n+1) = ones(length(x),1,class(x));
    for j = n:-1:1
        V(:,j) = x.*V(:,j+1);
    end
    
    % Solve least squares problem p = Vy to get polynomial coefficients p.
    [Q,R] = qr(V,0);
    oldws = warning('off','all');   % Turn all warnings off before solving
    try
        p = R(Q'*y);               % Same as p = Vy
    catch ME
        warning(oldws);             % Restore initial warning state
        throw(ME);
    end
    warning(oldws);                 % Restore initial warning state
    
    % Issue warnings.
    if size(R,2) > size(R,1)
        warning(message('MATLAB:polyfit:PolyNotUnique'))
    elseif warnIfLargeConditionNumber(R)
        if nargout > 2
            warning(message('MATLAB:polyfit:RepeatedPoints'));
        else
            warning(message('MATLAB:polyfit:RepeatedPointsOrRescale'));
        end
    end
    
    if nargout > 1
        r = y - V*p;
        % S is a structure containing three elements: the triangular factor
        % from a QR decomposition of the Vandermonde matrix, the degrees of
        % freedom and the norm of the residuals.
        S.R = R;
        S.df = max(0,length(y) - (n+1));
        S.normr = norm(r);
    end
    
    p = p.'; % Polynomial coefficients are row vectors by convention.
    
    function flag = warnIfLargeConditionNumber(R)
    if isa(R, 'single')
        flag = (condest(R) > 1e+05);
    else
        flag = (condest(R) > 1e+10);
    end

    参考资料

    1. Matlab inv
    2. Matlab @polyfit
    3. Stoer J, Bulirsch R. Introduction to Numerical Analysis[M]. Third Edition. New York, NY: Springer, 2002.
    4. 我的原始语雀文档
    展开全文
  • Matlab与线性代数 -- 矩阵的条件数

    千次阅读 2016-12-27 16:24:46
    本图文介绍了矩阵的条件数,以及Matlab中的求取方法。

    本图文介绍了矩阵的条件数,以及Matlab中的求取方法。

    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • matlab cond函数 矩阵的条件数

    万次阅读 2017-03-14 10:54:07
    MATLAB中,计算矩阵A的3种条件数的函数是: (1) cond(A,1) 计算A的1—范数下的条件数。 (2) cond(A)或cond(A,2) 计算A的2—范数数下的条件数。 (3) cond(A,inf) 计算A的 ∞—范数下的条件数。 (关于范数知识请...

    Cond(A)称作矩阵A的条件数,为矩阵A的范数与A的逆矩阵的范数的乘积

    定义 
    在MATLAB中,计算矩阵A的3种条件数的函数是:
    (1) cond(A,1) 计算A的1—范数下的条件数。
    (2) cond(A)或cond(A,2) 计算A的2—范数数下的条件数。
    (3) cond(A,inf) 计算A的 ∞—范数下的条件数。

    (关于范数知识请看我博客中关于norm函数的相关介绍)

    举例

    输入矩阵: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];
    命令:cond(A,1) 结果:ans = 92.1325
    命令:cond(A,2) 结果:ans =48.3117
    命令:cond(A,inf) 结果:ans =68.6582


    在matlab中,判断矩阵的奇异性一般用函数cond,求矩阵的条件数,即矩阵最大奇异值与最小奇异值的比值。当矩阵的条件数很大时,说明矩阵趋近于奇异

    矩阵的条件数

    条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。

    比如线性方程组
    matlab <wbr>cond函数 <wbr>矩阵的条件数

    的解是(x,y)=(2,1),
    matlab <wbr>cond函数 <wbr>矩阵的条件数

    的解是(x,y)=(-3.999,4.000)

    可见b很小的扰动就引起了x很大的变化,这就是A矩阵条件数大的表现。

    一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0特征值,x在对应特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在二范数下的条件数就可以表示成 abs(最大特征值/最小特征值)。
    展开全文
  • 基于MATLAB的数字基带通信系统仿真

    千次阅读 2020-10-18 16:19:01
    本论文主要研究了数字信号的基带传输的基本概念及数字信号基带传输...之后介绍了数字基带信号的最佳接收的条件以及如何通过示波器观察基带信号的波形。最后按照仿真过程基本步骤用MATLAB的仿真工具实现了数字基带传...
  • if size(R,2) > size(R,1) warning(message('MATLAB:polyfit:PolyNotUnique')) elseif warnIfLargeConditionNumber(R) if nargout > 2 warning(message('MATLAB:polyfit:RepeatedPoints')); else warning(message('...
  • 条件数的倒数:rcond(A):A为矩阵,rcond(A)为A的1范数的条件数的倒数的 估计值。如果A的条件数越好,那么其值在1.0附近;反之,则在无穷小附近。 %%矩阵的条件数 A = [11,2,3,4; 7,-2,-3,-4; 0.1,0.2,0.3,0.5; ...
  • Matlab 条件语句和函数

    2021-01-18 14:03:19
    TIPS ctrl R 注释 ctrl T 取消注释 %% ...%% 运行节 run section ctrl I 智能缩进 rem(a,b) a/b的余数(remainder) prod() 连乘,括号里放一个向量 ...c=size(A,2) 返回的时矩阵A的列。 tic...to
  • https://zhidao.baidu.com/question/401045516.html
  • matlab中寻找出array中符合要求的的位置,并赋值
  • 比如说求矩阵A中大于0的元素个,在matlab里可以这样写: sum(A(:)>0),这也是最简单的一种写法。 还有一种是利用find函数,先返回满足条件的元素的索引组成的向量,然后输出索引的长度即可, length(find(tm>0)...
  • matlab之在数组中找出符合条件

    万次阅读 2018-07-06 16:02:02
    可以使用find函数。 如找出大于1的: result=A(find(A&gt;1)); 如果要统计数量,前面加上length就好了。 Length(result);
  • %5、矩阵的条件数 % 方阵行列式 % 把一一个方阵看作一个行列式,并对其按行列式的规则求值,这个 % 值就称为方阵所对应的行列式的值。 % det(A):求方阵A所对应的行列式的值。 % eg 验证 det(A^-1)=1/det(A) A=[1,3...
  • 本文是对 Matlab 中 polyfit 函数进行原理解析,并没介绍该如何...相对详细介绍了线性方程组求解的稳定性问题,并引出条件数的定义。最后根据 polyfit 的源码对它进行计算流程解析,并分析相关的警告该如何处理。预...
  • 精品文档 MATLAB IIR数字低通滤波器的设计方法 1IIR 数字低通滤波器 滤波器分两大类经典滤波器和现代滤波器 经典滤波的概念是根据傅里叶分析和变换提出的一个工程概念根据高等数学理论 任何一个满足一定条件的信号 ...
  • MATLAB教学视频模资料及源程序代码下载及说明-MATLAB教学视频,模资料及源程序代码下载及说明.pdf MATLAB源程序代码、免费视频、教学课件及付费视频的预览版下载,请直接看此贴的附件PDF文档! 如果下载有...
  • 精品文档 精品文档 PAGE PAGE #欢迎下载 MATLAB IIR数字低通滤波器的设计方法 1 IIR数字低通滤波器 滤波器分两大类经典滤波器和现代滤波器 经典滤波的概念是根据傅里叶分析和变换提出的一个工程概念根据高等数学理论...
  • MATLAB

    2019-11-05 16:21:58
    文章目录矩阵的条件数矩阵的奇异值和奇异值分解 矩阵的条件数 1.矩阵A的条件数等于A的范数和A的逆的范数的乘积,即cond(A)=||A||*||A6^(-1)||。对应矩阵的3种范数,相应地可以定义3种条件数。其中对于2范数的条件数...
  • 前面在“数字调制系列:IQ 基本理论”一文中介绍了 IQ 的概念、常用数字调制方式及映射星座图等内容,当...作为整个数字调制发射系统的关键部件,IQ 调制器完成了基带信号的频谱搬移,从而达到空口传输的条件。什...
  • 求2~999之间同时满足下列条件的自然数。 1,该各位数字之和为奇数。 2,该位数字是素数。 for i=2:999 a=rem(i,10); b=rem(fix(i/10),10); c=fix(i/100); if rem((a+b+c),2) && isprime(i) disp(i); ...
  • 它具有利用模型进行仿真的一系列优点,如费用低,易于进行真实系统难于实现的各种试验,以及易于实现完全相同条件下的重复试验等。Matlab仿真软件就是分析通信系统常用的工具之一。 Matlab是一种交互式的、以矩阵为...
  • FIR数字滤波器是数字信号处理的一个重要组成部分由于FIR数字滤波器具有严格的线性相位因此在信息的采集和处理过程中得到了广泛的应用本文介绍了FIR数字滤波器的概念和线性相位的条件分析了窗函数法频率采样法和等...
  • Matlab开发】matlab删除数组中符合条件的元素与散点图绘制 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ matlab删除数组中符合条件的元素 如下代码: Locate=find(a>122) %a是存储数据的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 488
精华内容 195
关键字:

matlab条件数

matlab 订阅