资讯详情

信号与系统-matlab-动态圆-复平面方波信号的生成-行星模型

当我去信号和系统时,我又上了一堂讨论课。因为提到这个模型生成信号,老师让我用matlab我画了一个类似的词,不多说。下面是我的matlab代码:

其实这个项目的原理也很简单,就是在复平面上模拟方波信号的合成过程。

主要知识有:

  1. 傅里叶级数
  2. 合成圆模型
  3. 复平面上圆产生信号的原理

%制作行星运动模型 clear  %设置一些参数 w0=1; %角频率大小 r1=1;  谐波模的大小为% r2=1/3;3%谐波模的大小 r3=1/5;%5次谐波模的大小 r4=1/7;谐波模大小为%7次 r5=1/9;9%谐波模的大小 r6=1/11;次谐波模的大小 pp=0:pi/100:2*pi;   下面是图像的一些设置 figure; title(合成图像的方波谐波); hold on axis equal; axis([-3 8 -3 3]); xlabel('时间t'); ylabel(合成信号); set(gca,'XAxisLocation','origin'); 将x轴的位置设置在%y=0处 set(gca,'YAxisLocation','origin'); 将x轴的位置设置在%y=0处 set(gca,'linewidth',1); set(gca,'linewidth',1); set(gca,'xtick,; set(gca,'ytick,; set(gca, 'Xcolor', [0.8, 0.52, 0.98]); set(gca, 'Ycolor', [0.8, 0.52, 0.98]); axis normal set(gca, 'Position', get(gca, 'OuterPosition') - get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]); 初始产生位置% x1=-1 r1*cos(pp); y1=r1*sin(pp); plot(x1,y1,'k'); vidObj = VideoWriter('output','MPEG-4'); open(vidObj); 下面是圆的具体绘制过程 for t=0:0.01:8     下面是图形数学原理的显示     圆形叠加%1次     xx2=-1 r1*cos(w0*pi*t);运动圆心x坐标3%谐波     yy2=r1*sin(w0*pi*t);运动圆心y坐标3次谐波     x2=xx2 r2*cos(pp);运动圆3次谐波     y2=yy2 r2*sin(pp);运动圆3次谐波     px2=xx2 r2*cos(w0*3*pi*t);点X坐标在%3次谐波圆上     py2=yy2 r2*sin(w0*3*pi*t);点X坐标在%3次谐波圆上     h=plot(x2,y2,'k'); %绘制三次谐波运动圆     l_0=plot([xx2,-1],[yy2,0],'-k');     l_2=plot([xx2,px2],[yy2,py2],'-k'); %设置连线           %三个圆叠加     xx3=xx2 r2*cos(w0*pi*3*t);     yy3=yy2 r2*sin(w0*pi*3*t);     x3=xx3 r3*cos(pp);     y3=yy3 r3*sin(pp);     px3=xx3 r3*cos(w0*pi*5*t);     py3=yy3 r3*sin(w0*pi*5*t);     h_2=plot(x3,y3,'k');     l_3=plot([xx3,px3],[yy3,py3],'k');            %四个圆叠加     xx4=xx3 r3*cos(w0*pi*5*t);     yy4=yy3 r3*sin(w0*pi*5*t);     x4=xx4 r4*cos(pp);     y4=yy4 r4*sin(pp);     px4=xx4 r4*cos(w0*pi*5*t);     py4=yy4 r4*sin(w0*pi*5*t);     h_3=plot(x4,y4,'k');     l_4=plot([xx4,px4],[yy4,py4],'k');               %五个圆叠加     xx5=xx4 r4*cos(w0*pi*7*t);     yy5=yy4 r4*sin(w0*pi*7*t);     x5=xx5 r5*cos(pp);     y5=yy5 r5*sin(pp);     px5=xx5 r5*cos(w0*pi*9*t);     py5=yy5 r5*sin(w0*pi*9*t);     h_4=plot(x5,y5,'k');     l_7=plot([xx5,px5],[yy5,py5],'k');          %六个圆叠加     xx6=xx5 r5*cos(w0*pi*9*t);     yy6=yy5 r5*sin(w0*pi*9*t);     x6=xx6 r6*cos(pp);     y6=yy6 r6*sin(pp);     px6=xx6 r6*cos(w0*pi*11*t);     py6=yy6 r6*sin(w0*pi*11*t);     h_5=plot(x6,y6,'k');     l_8=plot([xx6,px6],[yy6,py6],'k');     plot(xx6,yy6,'.g','Linewidth',1);               %终于点到了圆心的连线     l_5=plot([xx6,-1],[yy6,0],'--g','Linewidth',1);          y坐标大小%合成模     l_6=plot([xx6,xx6],[yy6,0],'r','Linewidth',1);               %原理图与生成图之间的关系     % h_10=annotation('arrow',[xx6,t],[yy6,yy6]) ;  %建立从点(x(1),y(1))到点(x(2),y(2))的剪头注释对象。     h_6=plot([xx6,t],[yy6,yy六、     plot(t,yy6,'.r','Linewidth',1);     %生成第一张图片写入gif文件中     if(abs(t-0)<1e-3)       frame = getframe(gcf);       frame.cdata = imresize(frame.cdata, [960 1380]); %// 视频宽高设置:H行数(高),W列数(宽)       writeVideo(vidObj,frame);       frame=getframe(gcf);       imind=frame2im(frame);       [imind,cm]=rgb2ind(imind,256);       imwrite(imind,cm,简单谐波合成方波.gif','gif','Loopcount',inf,'DelayTime',1e-3);       else       frame = getframe(gcf);       frame.cdata = imresize(frame.cdata, [960 1380]); %// 视频宽高设置:H行数(高),W列数(宽)       writeVideo(vidObj,frame);       frame=getframe(gcf);       imind=frame2im(frame);       [imind,cm]=rgb2ind(imind,256);       imwrite(imind,cm,简单谐波合成方波.gif','gif','WriteMode','append','DelayTime',1e-3);     end     %删除之前产生的连线     delete(h);     delete(l_0);     delete(l_2);     delete(h_2);     delete(l_3);     delete(h_3);     delete(l_4);     delete(l_5);     delete(l_6);     delete(l_7);     delete(h_4);     delete(l_8);     delete(h_5);        delete(h_6);   end hold off;  close(vidObj); 

以下是生成gif文件:

以下是生成的视频:

https://pan.baidu.com/s/1K6vpvy02ho5oTm_0GS0pMA?pwd=rp5n

: rp5n 

标签: rp5n连接电缆

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台