###最近matlab在一些军工学校已经被禁了,(据说哈工大已经不能用matlab了)最近学院的一些学术作业也都要转移到python平台来实现了,最近会更新一些原本用matlab做着很简单,到了python不知所措的小作业。供学习参考。
方波,三角波的合成与分析
程序结构
#mermaid-svg-XrgeQ4VVDaUGg6z5 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .label text{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .node rect,#mermaid-svg-XrgeQ4VVDaUGg6z5 .node circle,#mermaid-svg-XrgeQ4VVDaUGg6z5 .node ellipse,#mermaid-svg-XrgeQ4VVDaUGg6z5 .node polygon,#mermaid-svg-XrgeQ4VVDaUGg6z5 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .node .label{text-align:center;fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .node.clickable{cursor:pointer}#mermaid-svg-XrgeQ4VVDaUGg6z5 .arrowheadPath{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edgeLabel rect{opacity:0.9}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edgeLabel span{color:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .cluster text{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-XrgeQ4VVDaUGg6z5 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-XrgeQ4VVDaUGg6z5 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .actor-line{stroke:grey}#mermaid-svg-XrgeQ4VVDaUGg6z5 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sequenceNumber{fill:#fff}#mermaid-svg-XrgeQ4VVDaUGg6z5 #sequencenumber{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .messageText{fill:#333;stroke:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-XrgeQ4VVDaUGg6z5 .labelText,#mermaid-svg-XrgeQ4VVDaUGg6z5 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .loopText,#mermaid-svg-XrgeQ4VVDaUGg6z5 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-XrgeQ4VVDaUGg6z5 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-XrgeQ4VVDaUGg6z5 .noteText,#mermaid-svg-XrgeQ4VVDaUGg6z5 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-XrgeQ4VVDaUGg6z5 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .section{stroke:none;opacity:0.2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .section2{fill:#fff400}#mermaid-svg-XrgeQ4VVDaUGg6z5 .section1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .section3{fill:#fff;opacity:0.2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sectionTitle0{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sectionTitle1{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sectionTitle2{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sectionTitle3{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-XrgeQ4VVDaUGg6z5 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .grid path{stroke-width:0}#mermaid-svg-XrgeQ4VVDaUGg6z5 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .task{stroke-width:2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText:not([font-size]){font-size:11px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .task.clickable{cursor:pointer}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskText3{fill:#fff}#mermaid-svg-XrgeQ4VVDaUGg6z5 .task0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .task1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .task2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutside0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutside2{fill:#000}#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutside1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .taskTextOutside3{fill:#000}#mermaid-svg-XrgeQ4VVDaUGg6z5 .active0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .active1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .active2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeText0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeText1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeText2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeText3{fill:#000 !important}#mermaid-svg-XrgeQ4VVDaUGg6z5 .done0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .done1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .done2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneText0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneText1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneText2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneText3{fill:#000 !important}#mermaid-svg-XrgeQ4VVDaUGg6z5 .crit0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .crit1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .crit2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCrit0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCrit1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCrit2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCrit0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCrit1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCrit2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-XrgeQ4VVDaUGg6z5 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .milestoneText{font-style:italic}#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCritText0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCritText1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCritText2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .doneCritText3{fill:#000 !important}#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCritText0,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCritText1,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCritText2,#mermaid-svg-XrgeQ4VVDaUGg6z5 .activeCritText3{fill:#000 !important}#mermaid-svg-XrgeQ4VVDaUGg6z5 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.classGroup text .title{font-weight:bolder}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.clickable{cursor:pointer}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-XrgeQ4VVDaUGg6z5 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .dashed-line{stroke-dasharray:3}#mermaid-svg-XrgeQ4VVDaUGg6z5 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 .commit-id,#mermaid-svg-XrgeQ4VVDaUGg6z5 .commit-msg,#mermaid-svg-XrgeQ4VVDaUGg6z5 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-XrgeQ4VVDaUGg6z5 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-XrgeQ4VVDaUGg6z5 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-XrgeQ4VVDaUGg6z5 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-XrgeQ4VVDaUGg6z5 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edgeLabel text{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-XrgeQ4VVDaUGg6z5 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-XrgeQ4VVDaUGg6z5 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-XrgeQ4VVDaUGg6z5 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-XrgeQ4VVDaUGg6z5 .note-edge{stroke-dasharray:5}#mermaid-svg-XrgeQ4VVDaUGg6z5 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-XrgeQ4VVDaUGg6z5 .error-icon{fill:#522}#mermaid-svg-XrgeQ4VVDaUGg6z5 .error-text{fill:#522;stroke:#522}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-XrgeQ4VVDaUGg6z5 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-XrgeQ4VVDaUGg6z5 .marker{fill:#333}#mermaid-svg-XrgeQ4VVDaUGg6z5 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-XrgeQ4VVDaUGg6z5 {color: rgba(0, 0, 0, 0.75);font: ;}
fft变换
fft变换
定义所需函数
合成方波
合成三角波
方波频谱
三角波频谱
自定义函数
#定义Harmonic synthesis(谐波合成)函数 Har_synth
#第一个参数为奇数谐波的最高次,第二个参数为信号时间的list
def Har_synth(i,x):
#定义Rect wave(方波生成)函数 Rec_wav
#第一个参数为方波时间对应的list,第二个参数为方波的幅度的list。
def Rec_wave(x,A):
#定义Triangle wave(三角波)函数 Trg_wave
#第一个参数为方波信号时间的list,第二个参数为方波对应时间的幅度的list
def Trg_wave(x,y):
#定义Frequece Amplitude函数 Fre_ampl
#第一个参数为信号时间的list,第二个参数为信号对应时间的幅度的list
#返回两个参数,第一个参数为frequecy的list(所得频率序列需除以总时长),第二个参数为amplitude的list
def Fre_ampl(x,y):
主要进程
a.
利用多次谐波的相加接近方波,最后通过规律,得出较为理想的生成方波函数。
b.
通过上一步得到的方波,对其进行积分运算得出三角波
c.
定义合适的方波和三角波,通过对其fft变换,并单边化处理,归一化处理,得出所需要的频谱图。
附整体代码
import matplotlib.pyplot as plt
import math
import numpy as np
import scipy.integrate as si#定义Harmonic synthesis(谐波合成)函数 Har_synth
#第一个参数为奇数谐波的最高次,第二个参数为信号时间的list
def Har_synth(i,x):length=len(x)tmp=np.zeros(length)y0=list(tmp)result=y0number=(i+1)/2while number>0:cof=i+2-number*2y=[math.sin(xx*cof)/cof for xx in x]tmp+=np.array(y)number =number - 1result=list(tmp)return result##定义Rect wave函数 Rec_wav
#第一个参数为方波时间对应的list,第二个参数为方波的幅度。
def Rec_wave(x,A):y=np.zeros(len(x))for i in range(1,101,2):y+=4*A/np.pi*np.sin(2*np.pi*i*x)/ireturn y#定义Triangle wave(三角波)函数 Trg_wave
#第一个参数为方波信号时间的list,第二个参数为方波对应时间的幅度的list
def Trg_wave(x,y):length=len(x)tmp=np.zeros(length)y0=tmpresult=list(y0)i=0tmp[i]=0#对方波信号进行积分while i<length-1:i=i+1x_frag=x[0:i]y_frag=y[0:i]y0[i]=si.simps(y_frag,x_frag)result=list(y0)return result#定义Frequece Amplitude函数 Fre_ampl
#第一个参数为信号时间的list,第二个参数为信号对应时间的幅度的list
#返回两个参数,第一个参数为frequecy的list(所得频率序列需除以总时长),第二个参数为amplitude的list
def Fre_ampl(x,y):y_f=np.fft.fft(y)f=np.arange(len(x))abs_y=np.abs(y_f)normalization_y=abs_y/(len(x)) half_x=f[range(int(len(x)/2))]normalization_y=normalization_y[range(int(len(x)/2))]return half_x,normalization_y#方波的合成:
fig=plt.figure(num=1,figsize=(6,4))
plt.axis([0,10,-1.2,1.2])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
#a.只考虑从 t=0s 到 t=10s 这段时间内的信号
x = np.arange(0, 10, 0.01)
#b.画出基波分量 y(t)=sin(t)
y1=[math.sin(xx) for xx in x]
#c.将三次谐波加到基波之上,并画出结果,并显示
y2=[math.sin(3*xx)/3 for xx in x]
tmp2=np.array(y1)+np.array(y2)
y2=list(tmp2)
#d.再将一次,三次,五次,七次,九次谐波加在一次。
y3=Har_synth(9,x)
#e.合并从基波到十九次谐波的各奇次谐波分量
#f.将上述波形分别画在一幅画中
y4=Har_synth(19,x)
plt.plot(x,y1,label='question b',color='darkviolet')
plt.plot(x,y2,label='question c',color='c')
plt.plot(x,y3,label='question d',color='b')
plt.plot(x,y4,label='question e',color='r')
plt.xlabel('time / s')
plt.ylabel('amplitude')
plt.legend(loc='upper right')#三角波的合成
fig1=plt.figure(num=2,figsize=(6,4))
x = np.arange(0, 10, 0.01)
y5=Har_synth(10001,x)
y5=Trg_wave(x,y5)
plt.axis([0,10,0,math.pi])
plt.plot(x,y5,color='c')
plt.xlabel('time / s')
plt.ylabel('amplitude')#定义方波,观察其频谱
yr=Rec_wave(x,3)
plt.figure(num=3,figsize=(6,4))
plt.axis([0,100,0,2])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))freq,ampl=Fre_ampl(x,yr)
plt.vlines(freq/10,0,ampl)
plt.xlabel('frequence/Hz')
plt.ylabel('amplitude/V')#定义三角波,观察其频谱
yt=Trg_wave(x,yr)
plt.figure(num=4,figsize=(6,4))
plt.axis([0,100,0,0.3])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))freq,ampl=Fre_ampl(x,yt)
plt.vlines(freq/10,0,ampl)
plt.xlabel('frequence/Hz')
plt.ylabel('amplitude/V')plt.show()
python实现方波,三角波的合成与分析相关推荐
- 电赛练习1《基础版》— 利用Multisim设计并制作一个简易的方波-三角波-正弦波信号发生器,要求输出频率可调,矩形波占空比可调等
首先呢, 感慨一下,我记得去年这个时候,也是放寒假,我在CSDN上写了第一篇原创,使用python画了一个蜡笔小新的头像,并且我在文末说明了自己会陆续更新很多文章,结果- 到了今天放寒假,我的文章还是 ...
- 模电课设 方波—三角波—正弦波信号发生器
文章目录 一.课程设计目的 二.设计内容 三.设计思路 一.课程设计目的 掌握电子电路的分析与综合设计方法,能够理论联系实践,设计电路模型 掌握电子技术现代工具的使用,能熟练运用电路仿真软件对电路进行 ...
- ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB
ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 目录 ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 基本原理 芯片选型 ...
- 数字信号处理 --- 周期信号的三角函数表示 一(三角函数的性质和三角波的合成)
三角函数的性质 一系列三角函数谐波(harmonic sinusoids)是傅里叶分析的基石,我们可以用这些不同频率的谐波构建各种各样的信号/波形. 谐波(harmonics): 现在我们选择一个频率 ...
- dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序
电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...
- 基于stm32单片机的四种波形发生器正弦波、方波、三角波、锯齿波
基于stm32单片机的四种波形发生器(源程序+仿真+设计报告)全套资料 资料编号:010 具体功能: (1) 可以实现四种波形:正弦波.方波.三角波.锯齿波: (2) 通过按键进行选择,频率可以调整: ...
- python正弦波和等腰三角波_51proteus仿真:生成方波、正弦波、锯齿波和三角波
51proteus仿真:生成方波.正弦波.锯齿波和三角波 这个proteus仿真是一个网友做的,该仿真可以生成方波.正弦波.锯齿波和三角波,并且还可以用按键调整波形. 不过,对初学者来讲,可能有点复杂 ...
- Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真
DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短.分辨率高和相位连续性好等优点.较容易实现频率.相位以及幅度的数控调 ...
- STM32 DAC 输出正弦波、三角波、方波
DAC可以将数字信号转换成模拟信号,在嵌入式系统开发中运用的十分广泛.在STM32实际运用中,可直接将数值映射成端口的电压值,通过大量的采样点输出,可达到输出指定波形的目的. 1.设置系统时钟(Clo ...
最新文章
- net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS)
- arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
- Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could n
- python语言采用编译执行方式_Python程序的执行过程 解释型语言和编译型语言
- python s d是什意思_python里d是什么意思
- c语言圆周率计算_C语言入门这一篇就够了
- 对java的集合的理解_谈谈你对java集合类的理解
- 记一次服务器被攻击事件
- Go 标准库介绍五: io
- Atitit. 状态模式(State)attilax 总结 跟个策 略模式的区别
- Netch + Connectify 实现代理转全局并共享给其他设备,例如Kindle
- 模糊查询SqlParameter参数化like
- 原来创业也可以这样:80后乞丐网上卖烧烤 500元起家赚了400万
- Android 谷歌拼音输入法最新发布
- 高绩效团队-VUCA时代的五个管理策略《三》—创新管理
- 【码云学习02】Git基本命令
- 红黑树详解,对插入旋转独到理解
- 二、Git本地仓库基本操作——创建Git仓库、提交更新或删除文件
- ABR CQP CRF码率控制总结
- 用java实现简易的切换房间砍怪(大作业)
热门文章
- 太平洋产险 开启微信服务时代
- python 设置开机自动启动_一键开机启动添加(python)
- codeforces 708A - Letters Cyclic Shift
- java: JDK isn‘t specified for module ‘apputils‘错误解决
- 如何查看bilibili分集合集视频总时长
- Linux的主流发行版
- charles iphone8 windows 连接 下载证书不能上网
- vue实现打印预览pdf(window.open)
- 名人投资加密货币:推动行业发展的重要力量(连载一)
- 网易云歌单添加到php,[PHP源码]PHP获取网易云音乐mp3直链