日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

使用matlab如何求卷积,利用MATLAB求解卷积的方法分类

發布時間:2023/12/9 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用matlab如何求卷积,利用MATLAB求解卷积的方法分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用MATLAB 求解卷積的方法分類 求法一:

求有序列A (n )=1 n=3,4,5,6,7,8,9,,10,11,1,2.B(n)=1 n=2,3,4,5,6,7,8,9,. 代碼:

n1=3;n2=12;

>> m1=2;m2=9;

>> a=ones(1,(n2-n1+1));

>> b=ones(1,(m2-m1+1));

>> c=conv(a,b);

>> nc1=n1+m1;nc2+m2+n2;

nc1=n1+m1;nc2=m2+n2;

>> kc=nc1:nc2;

>> kc,c

stem(kc,c),text(18,6,'非平凡法')

>> CC=[zeros(1,kc(1)),c];

kc=0:(n2+m2);

>> stem(kc,CC),text(18,6,'非平凡法')

求法二:

N1=3;N2=12;

a=ones(1,N2+1);a(1:N1)=0;

M1=2;M2=9;

b=ones(1,M2+1);b(1:M1)=0;

c=conv(a,b);

kc=0:(N2+M2);

kc,c

subplot(2,1,1),stem(kc,c),text(20,6,'0 起點法')

求法三:

求有限序列與無限序列的卷積

clear

>> M=4;

>> h=[0.1,0.35,-0.42,-0.05,0.15];

>> N=10000;

>>rng default %恢復matlab 啟動時默認的全局隨機流。

>> u=randsrc(1,N);

>>tic

>> y_filter=filter(h,1,u);

>> t_filter=toc;

>> tic

>> ct=[u(1),zeros(1,M)];

>> ut=toeplitz(ct,u);

>> y_toe=h*ut;

>> t_toe=toc;

>> %卷積指令法

>> tic

>> y_conv=conv(h,u);

>> t_conv=toc;

>> y_conv(N+1:end)=[];

filter 是一維數字濾波器

使用方法:

Y = filter(B,A,X) ,輸入X 為濾波前序列,Y 為濾波結果序列,B/A 提供濾波器系數,B 為分子, A 為分母

整個濾波過程是通過下面差分方程實現的:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

[Y,Zf] = filter(B,A,X,Zi),輸入X 為濾波前序列,Y 為濾波結果序列,B/A 提供濾波器系數,B 為分子, A 為分母,

在MATLAB 中,可以用函數y=filter(p,d,x)實現差分方程的仿真,也可以用函數 y=conv(x,h)計算卷積,用y=impz(p,d,N)求系統的沖激響應。

實現差分方程

先從簡單的說起:

filter([1,2],1,[1,2,3,4,5])

實現 y[k]=x[k]+2*x[k-1]

y[1]=x[1]+2*0=1%(x[1]之前狀態都用0)

y[2]=x[2]+2*x[1]=2+2*1=4

a. 下面程序是用來實現h 和x 的卷積得,分別用了filter 和conv 函數,兩者函數得出的結果一樣。

h = [3 2 1 -2 1 0 -4 0 3]; % impulse response

x = [1 -2 3 -4 3 2 1]; % input sequence

y = conv(h,x);

n = 0:14;

subplot(2,1,1);

stem(n,y);

xlabel('Time index n'); ylabel('Amplitude');

title('Output Obtained by Convolution'); grid;

x1 = [x zeros(1,8)];

y1 = filter(h,1,x1);

subplot(2,1,2);

stem(n,y1);

xlabel('Time index n'); ylabel('Amplitude');

title('Output Generated by Filtering'); grid;

要實現下式的沖擊響應和階躍響應,可以分別采用三種方法。

y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]。

b. 單位沖激響應:

(1)用filter 函數

a1=[1,0.75,0.125];

b1=[1,-1];

n=0:20;

x1=[1 zeros(1,20)];

y1filter=filter(b1,a1,x1);

stem(n,y1filter);

title('y1filter');

xlabel('x');

ylabel('y');

(2)用conv 函數

a1=[1,0.75,0.125];

b1=[1,-1];

x1=[1 zeros(1,10)];

[h]=impz(b1,a1,10);

y1conv=conv(h,x1);

n=0:19;

stem(n,y1conv,'filled')

(3)用impz 函數

a1=[1,0.75,0.125];

b1=[1,-1];

impz(b1,a1,21);

c. 單位階躍響應:

(1)用filter 函數

a1=[1,0.75,0.125];

b1=[1,-1];

n=0:20;

x2=ones(1,21);

y1filter=filter(b1,a1,x2);

stem(n,y1filter);

title('y1filter_step');

xlabel('x');

ylabel('y');

(2)用conv 函數

a1=[1,0.75,0.125];

b1=[1,-1];

x2=ones(1,21);

[h]=impz(b1,a1,20);

y1=conv(h,x2);

y1conv=y1(1:21); %為何y1conv 要取y1中1:21的值,解釋見

n1=0:20; %y2à單位階躍響應à用conv 函數中注釋

stem(n1,y1conv,'filled');

title('y1conv');

xlabel('n');

ylabel('y1[n]');

(3)用impz 函數

a=[1,0.75,0.125];

b=1;

impz(b,a)

即y=filter(p,d,x)用來實現差分方程,d 表示差分方程輸出y 的系數,p 表示輸入x 的系數,而x 表示輸入序列。輸出結果長度數等于x 的長度。

而y=conv(x,h)是用來實現卷級的,對x 序列和h 序列進行卷積,輸出的結果個數等于x 的長度與h 的長度之和減去1。

y=impz(p,d,N)是用來實現沖擊響應的,d 和p 的定義見filter ,N 表示沖擊響應輸出的序列個數。

總結

以上是生活随笔為你收集整理的使用matlab如何求卷积,利用MATLAB求解卷积的方法分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。