###最近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. net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS)
  2. arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
  3. Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could n
  4. python语言采用编译执行方式_Python程序的执行过程 解释型语言和编译型语言
  5. python s d是什意思_python里d是什么意思
  6. c语言圆周率计算_C语言入门这一篇就够了
  7. 对java的集合的理解_谈谈你对java集合类的理解
  8. 记一次服务器被攻击事件
  9. Go 标准库介绍五: io
  10. Atitit. 状态模式(State)attilax 总结 跟个策 略模式的区别
  11. Netch + Connectify 实现代理转全局并共享给其他设备,例如Kindle
  12. 模糊查询SqlParameter参数化like
  13. 原来创业也可以这样:80后乞丐网上卖烧烤 500元起家赚了400万
  14. Android 谷歌拼音输入法最新发布
  15. 高绩效团队-VUCA时代的五个管理策略《三》—创新管理
  16. 【码云学习02】Git基本命令
  17. 红黑树详解,对插入旋转独到理解
  18. 二、Git本地仓库基本操作——创建Git仓库、提交更新或删除文件
  19. ABR CQP CRF码率控制总结
  20. 用java实现简易的切换房间砍怪(大作业)

热门文章

  1. 太平洋产险 开启微信服务时代
  2. python 设置开机自动启动_一键开机启动添加(python)
  3. codeforces 708A - Letters Cyclic Shift
  4. java: JDK isn‘t specified for module ‘apputils‘错误解决
  5. 如何查看bilibili分集合集视频总时长
  6. Linux的主流发行版
  7. charles iphone8 windows 连接 下载证书不能上网
  8. vue实现打印预览pdf(window.open)
  9. 名人投资加密货币:推动行业发展的重要力量(连载一)
  10. 网易云歌单添加到php,[PHP源码]PHP获取网易云音乐mp3直链