matlab卷积动画实现
生活随笔
收集整理的這篇文章主要介紹了
matlab卷积动画实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
matlab卷積動畫實現
為了完成學校布置的卷積動畫任務,匆匆學了下matlab的相關操作,寫的代碼也是很爛,最后實現了相關功能,分享一下。
直接上代碼
clc subplot(2,1,2)t1=[0 0.1]; %同時輸入兩個點,兩點一線 m1=0.5*t1; p = plot(t1,m1,'-b','MarkerSize',5); axis([0 5 0 1.5]); grid on; x=-3:0.01:6; y=zeros(1,length(x)); % x,y 的初始化 n=1; j=1; %定義兩個計數變量%定義一個函數h(x) ft=f(x,0,1); subplot(2,1,1)h=plot(x,ft); txt=text (1,1.06,'h(x)'); axis([x(1),x(end),0,1.5]); grid on; hold on; %在同一個figure下繪制g(x)%繪制g(x) plot(x,f(x,0,0.5),'m'); L=text (1,0.56,'g(x)'); pause(2);%把x變為τ,反褶h(τ) k=plot(x,f(-x,0,1),'r'); axis([x(1),x(end),0,1.5]); txt2=text(-1,1.06,'h(-τ)'); grid on; pause(1); delete(h); %清除h(x)的圖像 delete(L); text (1,0.56,'g(τ)'); delete (txt) pause(0.5);%令h(x-τ)動態右移 delete(k); delete (txt2) for i=0:0.01:4subplot(2,1,1) m=plot(x,f(-x,-i,1),'r')axis([x(1),x(end),0,1.5]);grid on;txt=text (-1+i,1.06,'h(x-τ)');if i<2y=0.5*(x==i) u(n)= plot(x,y,'k') %用直線填充函數交匯的地方n=n+1;elseif j<=200 delete (u(j)) %刪除不交匯區域的直線j=j+1 endpause(0.01);delete(m);delete(txt); %刪除前一個函數繪制后一個函數實現動態移動subplot(2,1,2)hold ont1=t1+0.01; %下一段線if i<1.9m1=0.5*t1;p = plot(t1,m1,'-b','MarkerSize',5); elseif i>1.97m1=-0.5*t1+2p = plot(t1,m1,'-b','MarkerSize',5); endaxis([0 5 0 1.5]);pause(0.0001); endsubplot(2,1,1) plot(x,f(-x,-4,1),'r') text (4,1.06,'h(x-τ)'); %繪制寬度為2,位置隨i變化,高度隨q變化的脈沖子函數 function[y]=f(x,i,q) y=zeros(1,length(x)); x_pos=find((x>=(0+i))&(x<(2+i))); y(x_pos)=q; end響應的動畫效果如圖。
總結
以上是生活随笔為你收集整理的matlab卷积动画实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub的DGit改进了平台的可靠性
- 下一篇: 我的jekyll配置和修改