⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getconvolution.m

📁 这是一个基于matlab开发的关于c语言的图形转换程序,可实现直方图的生成和传输
💻 M
字号:
function [y,t] = getconvolution(sig1,sig2);
% [y,t] = GETCONVOLUTION(sig1,sig2)
% Numerical Convolution of two signal objects.  It returns data
% appropriate to create a line plot.  The convolution is actually only
% calculated over the range in tRange or the support of the signals
% whichever is smaller.

supp1 = support(sig1);
supp2 = support(sig2);
supp = supp1 + supp2;
fs = max(suggestrate(sig1,supp1),suggestrate(sig2,supp2));
T = 1/fs;

if 1
   s1 = sig1(supp1(1):T:supp1(2));
   s2 = sig2(supp2(1):T:supp2(2));
   NConv = length(s1)+length(s2)-1;
   NFFT = 2^nextpow2(NConv);
   s1 = fft(s1,NFFT);
   s2 = fft(s2,NFFT);
   y = real(ifft(s1.*s2));
   y = T*y(1:NConv);
   t = supp(1):1/fs:supp(2);
   t = [ t(1)-diff(supp)/2  t  t(end)+diff(supp)/2 ];
   y = [0 y 0];
end

% Integration Method
if 0
   supp = support(sig1) + support(sig2);
   if (supp(1)>tRange(2)) | (supp(2)<tRange(1))
      t = tRange;
      y = [0 0];
      return;
   elseif (supp(1)<tRange(1)) & (supp(2)>tRange(2))
      t = tRange(1):1/fs:tRange(2)-1/fs;
      [tt,tau] = meshgrid(t);
      y = trapz(sig1(tau).*sig2(tt-tau)) * T;
   elseif supp(1)>tRange(1) & supp(2)<tRange(2)
      t = supp(1):1/fs:supp(2)-1/fs;
      [tt,tau] = meshgrid(t);
      y = trapz(sig1(tau).*sig2(tt-tau)) * T;
      t = [tRange(1) t(1) t t(end) tRange(2)];
      y = [0 0 y 0 0];
   elseif supp(1)<tRange(1)
      t = tRange(1):1/fs:supp(2)-1/fs;
      [tt,tau] = meshgrid(t);
      y = trapz(sig1(tau).*sig2(tt-tau)) * T;
      t = [t t(end) tRange(2)];
      y = [y 0 0];
   else
      t = supp(1):1/fs:tRange(2)-1/fs;
      [tt,tau] = meshgrid(t);
      y = trapz(sig1(tau).*sig2(tt-tau)) * T;
      t = [tRange(1) t(1) t];
      y = [0 0 y];
   end
end

⌨️ 快捷键说明

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