参阅此,
使用VC++输出调幅波的数值和波形_c++如何显示下位机传输过来的频谱信号 csdn_bcbobo21cn的博客-CSDN博客
用winform做一下;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace amtest
{public partial class Form1 : Form{private double pi = 3.14159;int tzh = 100;int zbh = 1000;public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){//Graphics g = pictureBox1.CreateGraphics();//g.Clear(this.BackColor);tzh = Convert.ToInt32(textBox2.Text);zbh = Convert.ToInt32(textBox3.Text);pictureBox1.Invalidate();}private void pictureBox1_Paint(object sender, PaintEventArgs e){Graphics g = e.Graphics;Pen p1 = new Pen(Color.Blue, 1);int r = 0;double s, t;int i; //循环变量Point ptstart = new Point(0, 0);Point pt = new Point();for (i = 0; i < 10000; i++){t = i / 10000.0;s = (1 + 0.5 * Math.Cos(2 * pi * tzh * t)) * Math.Cos(2 * pi * zbh * t);//信号的表达式pt.X = (int)(t * 10000);//pt.X = (int)t;pt.Y = 200 + (int)s * 60;g.DrawLine(p1, ptstart, pt);ptstart = pt;r = r + 1;}}}
}
2个代码是一样的;只是C#的参数可调;
画了几个看上去不太像调幅波;
s = (1 + 0.5 * Math.Cos(2 * pi * tzh * t)) * Math.Cos(2 * pi * zbh * t);//信号的表达式
这是调幅波的表达式;当前是假定载波为余弦,调制信号也是余弦;tzh是调制信号频率,zbh是载波频率,单位Hz;算出来的s是调制后的信号幅度;zbh必须高于tzh;
pt.X = (int)(t * 10000);
横坐标是用t来算的; t * 10000,然后把结果转换为整型;如果写 pt.X = (int)t * 10000 将会出现错误,因为t非常小,先把t转为整型总是0,再乘以10000结果总是0;
有时间再细看;