self_conv.m

来自「matlab实现卷积运算。非常高兴业大家分享此代码。」· M 代码 · 共 25 行

M
25
字号
function [ y ] = self_conv ( x, h )
% --------------------------------------------------------------
% The function of compute the convolution sum y[n] = x[n] * h[n]
% 求离散序列卷积函数
% --------------------------------------------------------------
% 利用多项式乘法的原理求解输入信号与系统的卷积
% x:  输入序列x[n]非零样值向量
% h:  系统序列h[n]非零样值向量
% ---------------------------------------------------------------
nx = length(x);                                     % 输入序列x[n]的长度
nh = length(h);                                     % 系统序列h[n]的长度
if nx ~= prod(size(x)) | nh ~= prod(size(h))        % x,h不是向量,返回错误
  error ( 'x and h must be vectors.' );
end
y = x .* h ( 1 );                                   % 系统第一个序列与输入信号相乘
for i = 2 : nh                                      % 将系统每个序列与输入信号相乘,
                                                    % 将乘积作相应的平移后相加
    temp = x .* h ( i );
    for j = 1 : i - 1
        temp = [ 0 temp ];                          % 乘积平移
    end;
    y = [ y 0 ];                                    % 输出信号补位
    y = y + temp;
end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?