参阅此,
使用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;
有时间再细看;