matlab中函数声明的访问

matlab中函数声明的访问,matlab,convolution,Matlab,Convolution,matlab中的卷积函数是conv()。我的问题是如何获得函数本身的实际实现?如果您想了解conv()的工作原理或制作自己版本的conv函数,您可以随时键入 open conv 在命令窗口中。然后,您可以查看原始函数,并(如有必要)将其保存在新名称下,并使用您编辑的版本。如果您想了解conv()的工作原理或制作自己的conv函数版本,您可以随时键入 open conv 在命令窗口中。然后,您可以查看原始函数,并(如有必要)将其保存在新名称下并使用编辑后的版本。有两种方法: 方法1 当您实现c

matlab中的卷积函数是
conv()
。我的问题是如何获得函数本身的实际实现?

如果您想了解conv()的工作原理或制作自己版本的conv函数,您可以随时键入

open conv

在命令窗口中。然后,您可以查看原始函数,并(如有必要)将其保存在新名称下,并使用您编辑的版本。

如果您想了解conv()的工作原理或制作自己的conv函数版本,您可以随时键入

open conv
在命令窗口中。然后,您可以查看原始函数,并(如有必要)将其保存在新名称下并使用编辑后的版本。

有两种方法:

  • 方法1

    当您实现
    conv()
    或任何函数(用户定义或内置)时,只需右键单击该函数,然后单击打开即可查看函数脚本

  • 方法2

    在命令窗口中写入
    open conv()
    conv()
    可以是任何函数


  • 卷积函数:

    function c = conv(a, b, shape)
    %CONV Convolution and polynomial multiplication.
    %   C = CONV(A, B) convolves vectors A and B.  The resulting vector is
    %   length MAX([LENGTH(A)+LENGTH(B)-1,LENGTH(A),LENGTH(B)]). If A and B are
    %   vectors of polynomial coefficients, convolving them is equivalent to
    %   multiplying the two polynomials.
    %
    %   C = CONV(A, B, SHAPE) returns a subsection of the convolution with size
    %   specified by SHAPE:
    %     'full'  - (default) returns the full convolution,
    %     'same'  - returns the central part of the convolution
    %               that is the same size as A.
    %     'valid' - returns only those parts of the convolution 
    %               that are computed without the zero-padded edges. 
    %               LENGTH(C)is MAX(LENGTH(A)-MAX(0,LENGTH(B)-1),0).
    %
    %   Class support for inputs A,B: 
    %      float: double, single
    %
    %   See also DECONV, CONV2, CONVN, FILTER, XCORR, CONVMTX.
    %
    %   Note: XCORR and CONVMTX are in the Signal Processing Toolbox.
    
    
    %   Copyright 1984-2013 The MathWorks, Inc.
    
    if ~isvector(a) || ~isvector(b)
      error(message('MATLAB:conv:AorBNotVector'));
    end
    
    if nargin < 3
        shape = 'full';
    end
    
    if ~ischar(shape) && ~(isstring(shape) && isscalar(shape))
      error(message('MATLAB:conv:unknownShapeParameter'));
        end
        if isstring(shape)
            shape = char(shape);
        end
        
        % compute as if both inputs are column vectors
        c = conv2(a(:),b(:),shape);
        
        % restore orientation
        if shape(1) == 'f' || shape(1) == 'F'  %  shape 'full'
            if length(a) > length(b)
                if size(a,1) == 1 %row vector
                    c = c.';
                end
            else
                if size(b,1) == 1 %row vector
                    c = c.';
                end
            end
        else
            if size(a,1) == 1 %row vector
                c = c.';
            end
        end
    end
    if isstring(shape)
        shape = char(shape);
    end
    
    % compute as if both inputs are column vectors
    c = conv2(a(:),b(:),shape);
    
    % restore orientation
    if shape(1) == 'f' || shape(1) == 'F'  %  shape 'full'
        if length(a) > length(b)
            if size(a,1) == 1 %row vector
                c = c.';
            end
        else
            if size(b,1) == 1 %row vector
                c = c.';
            end
        end
    else
        if size(a,1) == 1 %row vector
            c = c.';
        end
    end
    
    函数c=conv(a、b、形状)
    %CONV卷积和多项式乘法。
    %C=CONV(A,B)将向量A和B卷积。得到的向量为
    %最大长度([长度(A)+长度(B)-1,长度(A),长度(B)])。如果A和B是
    %多项式系数的向量,卷积它们相当于
    %将两个多项式相乘。
    %
    %C=CONV(A,B,SHAPE)返回卷积的一个子段和大小
    %按形状指定:
    %“full”-(默认)返回完整卷积,
    %“same”-返回卷积的中心部分
    %那和A一样大。
    %“valid”-仅返回卷积的那些部分
    %在没有零填充边的情况下计算的。
    %长度(C)是最大值(长度(A)-MAX(0,长度(B)-1),0)。
    %
    %输入A、B的类支持:
    %浮动:双人、单人
    %
    %另请参见DECONV、CONV2、CONVN、FILTER、XCORR、CONVMTX。
    %
    %注:XCORR和CONVMTX在信号处理工具箱中。
    %版权所有1984-2013 MathWorks公司。
    如果~isvector(a)| | ~isvector(b)
    错误(消息('MATLAB:conv:AorBNotVector');
    终止
    如果nargin<3
    形状='满';
    终止
    if~ischar(shape)&&&~(isstring(shape)&&isscalar(shape))
    错误(消息('MATLAB:conv:unknownShapeParameter');
    终止
    如果是字符串(形状)
    形状=字符(形状);
    终止
    %就像两个输入都是列向量一样进行计算
    c=conv2(a(:),b(:),形状);
    %恢复方向
    如果形状(1)='f'| |形状(1)='f'%shape'已满'
    如果长度(a)>长度(b)
    如果大小(a,1)=1%行向量
    c=c';
    终止
    其他的
    如果大小(b,1)=1%行向量
    c=c';
    终止
    终止
    其他的
    如果大小(a,1)=1%行向量
    c=c';
    终止
    终止
    终止
    如果是字符串(形状)
    形状=字符(形状);
    终止
    %就像两个输入都是列向量一样进行计算
    c=conv2(a(:),b(:),形状);
    %恢复方向
    如果形状(1)='f'| |形状(1)='f'%shape'已满'
    如果长度(a)>长度(b)
    如果大小(a,1)=1%行向量
    c=c';
    终止
    其他的
    如果大小(b,1)=1%行向量
    c=c';
    终止
    终止
    其他的
    如果大小(a,1)=1%行向量
    c=c';
    终止
    终止
    
    更新:

    这与问题无关。无论如何,您想要计算卷积积分,但matlab中的函数定义是:

    w=conv(u,v)
    返回向量u和v的卷积。如果u和v是多项式系数的向量,则将它们卷积相当于将两个多项式相乘

    假设这是离散的卷积,并且没有给出结果的公式。如果需要计算结果的公式,请使用符号工具箱计算公式


    见此

    有两种方法:

  • 方法1

    当您实现
    conv()
    或任何函数(用户定义或内置)时,只需右键单击该函数,然后单击打开即可查看函数脚本

  • 方法2

    在命令窗口中写入
    open conv()
    conv()
    可以是任何函数


  • 卷积函数:

    function c = conv(a, b, shape)
    %CONV Convolution and polynomial multiplication.
    %   C = CONV(A, B) convolves vectors A and B.  The resulting vector is
    %   length MAX([LENGTH(A)+LENGTH(B)-1,LENGTH(A),LENGTH(B)]). If A and B are
    %   vectors of polynomial coefficients, convolving them is equivalent to
    %   multiplying the two polynomials.
    %
    %   C = CONV(A, B, SHAPE) returns a subsection of the convolution with size
    %   specified by SHAPE:
    %     'full'  - (default) returns the full convolution,
    %     'same'  - returns the central part of the convolution
    %               that is the same size as A.
    %     'valid' - returns only those parts of the convolution 
    %               that are computed without the zero-padded edges. 
    %               LENGTH(C)is MAX(LENGTH(A)-MAX(0,LENGTH(B)-1),0).
    %
    %   Class support for inputs A,B: 
    %      float: double, single
    %
    %   See also DECONV, CONV2, CONVN, FILTER, XCORR, CONVMTX.
    %
    %   Note: XCORR and CONVMTX are in the Signal Processing Toolbox.
    
    
    %   Copyright 1984-2013 The MathWorks, Inc.
    
    if ~isvector(a) || ~isvector(b)
      error(message('MATLAB:conv:AorBNotVector'));
    end
    
    if nargin < 3
        shape = 'full';
    end
    
    if ~ischar(shape) && ~(isstring(shape) && isscalar(shape))
      error(message('MATLAB:conv:unknownShapeParameter'));
        end
        if isstring(shape)
            shape = char(shape);
        end
        
        % compute as if both inputs are column vectors
        c = conv2(a(:),b(:),shape);
        
        % restore orientation
        if shape(1) == 'f' || shape(1) == 'F'  %  shape 'full'
            if length(a) > length(b)
                if size(a,1) == 1 %row vector
                    c = c.';
                end
            else
                if size(b,1) == 1 %row vector
                    c = c.';
                end
            end
        else
            if size(a,1) == 1 %row vector
                c = c.';
            end
        end
    end
    if isstring(shape)
        shape = char(shape);
    end
    
    % compute as if both inputs are column vectors
    c = conv2(a(:),b(:),shape);
    
    % restore orientation
    if shape(1) == 'f' || shape(1) == 'F'  %  shape 'full'
        if length(a) > length(b)
            if size(a,1) == 1 %row vector
                c = c.';
            end
        else
            if size(b,1) == 1 %row vector
                c = c.';
            end
        end
    else
        if size(a,1) == 1 %row vector
            c = c.';
        end
    end
    
    函数c=conv(a、b、形状)
    %CONV卷积和多项式乘法。
    %C=CONV(A,B)将向量A和B卷积。得到的向量为
    %最大长度([长度(A)+长度(B)-1,长度(A),长度(B)])。如果A和B是
    %多项式系数的向量,卷积它们相当于
    %将两个多项式相乘。
    %
    %C=CONV(A,B,SHAPE)返回卷积的一个子段和大小
    %按形状指定:
    %“full”-(默认)返回完整卷积,
    %“same”-返回卷积的中心部分
    %那和A一样大。
    %“valid”-仅返回卷积的那些部分
    %在没有零填充边的情况下计算的。
    %长度(C)是最大值(长度(A)-MAX(0,长度(B)-1),0)。
    %
    %输入A、B的类支持:
    %浮动:双人、单人
    %
    %另请参见DECONV、CONV2、CONVN、FILTER、XCORR、CONVMTX。
    %
    %注:XCORR和CONVMTX在信号处理工具箱中。
    %版权所有1984-2013 MathWorks公司。
    如果~isvector(a)| | ~isvector(b)
    错误(消息('MATLAB:conv:AorBNotVector');
    终止
    如果nargin<3
    形状='满';
    终止
    if~ischar(shape)&&&~(isstring(shape)&&isscalar(shape))
    错误(消息('MATLAB:conv:unknownShapeParameter');
    终止
    如果是字符串(形状)
    形状=字符(形状);
    终止
    %就像两个输入都是列向量一样进行计算
    c=conv2(a(:),b(:),形状);
    %恢复方向
    如果形状(1)='f'| |形状(1)='f'%shape'已满'
    如果长度(a)>长度(b)