###最近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. 电赛练习1《基础版》— 利用Multisim设计并制作一个简易的方波-三角波-正弦波信号发生器,要求输出频率可调,矩形波占空比可调等

    首先呢, 感慨一下,我记得去年这个时候,也是放寒假,我在CSDN上写了第一篇原创,使用python画了一个蜡笔小新的头像,并且我在文末说明了自己会陆续更新很多文章,结果- 到了今天放寒假,我的文章还是 ...

  2. 模电课设 方波—三角波—正弦波信号发生器

    文章目录 一.课程设计目的 二.设计内容 三.设计思路 一.课程设计目的 掌握电子电路的分析与综合设计方法,能够理论联系实践,设计电路模型 掌握电子技术现代工具的使用,能熟练运用电路仿真软件对电路进行 ...

  3. ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB

    ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 目录 ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 基本原理 芯片选型 ...

  4. 数字信号处理 --- 周期信号的三角函数表示 一(三角函数的性质和三角波的合成)

    三角函数的性质 一系列三角函数谐波(harmonic sinusoids)是傅里叶分析的基石,我们可以用这些不同频率的谐波构建各种各样的信号/波形. 谐波(harmonics): 现在我们选择一个频率 ...

  5. dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序

    电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...

  6. 基于stm32单片机的四种波形发生器正弦波、方波、三角波、锯齿波

    基于stm32单片机的四种波形发生器(源程序+仿真+设计报告)全套资料 资料编号:010 具体功能: (1) 可以实现四种波形:正弦波.方波.三角波.锯齿波: (2) 通过按键进行选择,频率可以调整: ...

  7. python正弦波和等腰三角波_51proteus仿真:生成方波、正弦波、锯齿波和三角波

    51proteus仿真:生成方波.正弦波.锯齿波和三角波 这个proteus仿真是一个网友做的,该仿真可以生成方波.正弦波.锯齿波和三角波,并且还可以用按键调整波形. 不过,对初学者来讲,可能有点复杂 ...

  8. Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真

    DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短.分辨率高和相位连续性好等优点.较容易实现频率.相位以及幅度的数控调 ...

  9. STM32 DAC 输出正弦波、三角波、方波

    DAC可以将数字信号转换成模拟信号,在嵌入式系统开发中运用的十分广泛.在STM32实际运用中,可直接将数值映射成端口的电压值,通过大量的采样点输出,可达到输出指定波形的目的. 1.设置系统时钟(Clo ...

最新文章

  1. VC++2005 CString和char*的相互转换
  2. CSS属性中Display与Visibility
  3. Node.js与Express4安装与配置
  4. jdom学习:读取xml文件
  5. Windows Server 2016提供Docker原生运行的企业级支持
  6. 【DP】奇怪汉诺塔(ybtoj DP-1-2)
  7. 休眠锁定模式–乐观锁定模式如何工作
  8. Visual Composer 最好的扩展 wordpress插件
  9. CSS一行显示,显示不下的用省略号显示
  10. (寒假集训)Mooo Moo (完全背包)
  11. 安装JDK出现问题 Error opening registry key'software\Javasoft\Java Runtime Environment'
  12. 如何在 Ubuntu 14.04 里面配置 chroot 环境
  13. java 反射 接口工具类_Java 反射工具类 ReflectionUtils
  14. HMC 命令行登陆设置
  15. layer normalization 缺点_【收藏贴】不同种类质谱仪优缺点分析对比!
  16. [转]coolfire黑客入门教程系列之(三)
  17. #游戏unity-VR场景漫游#shader之消除纹理重复感
  18. JavaScript+随机选号
  19. IP欺骗攻击原理及如何修改IP
  20. NYOJ234吃土豆(双层动态规划)

热门文章

  1. 愿你在合适的年纪遇到愿意栽培你的人
  2. 假设Tom和Jerry利用Java UDP进行聊天
  3. pywinauto java_pywinauto客户端自动化---pywinauto初始
  4. sleuth+zipkin日志输出traceId(五)
  5. python编程大赛队名_编程吧少年总决赛圆满落幕,小码王学员包揽Python组第一!...
  6. Java8 Stream API学习
  7. ZedBoard--(5)嵌入式Linux下的DMA测试(Direct Register Mode)(PS + PL)
  8. c语言strlen注意事项
  9. kaggle 泰坦尼克项目实战(详细代码分享)——集成学习Soft voting
  10. webpack 面试题