Hackrf_One_Lesson4

Lesson4

Complex number

Python中把 j 当作虚数单位

该节对复数讲解相当精彩,未做多余的笔记

在这里插入图片描述

信号源发出的并不是cos波,而是复数型指数函数

在这里插入图片描述

上下依次相加最后点都落在x轴上,这些点连起来实则为cos函数,也就是cos相当于两个频率相反的复指数相加再除以2,因为cos的幅度大小是复数的模的两倍。图形上得到的结论刚好与欧拉公式一致

在这里插入图片描述

在这里插入图片描述

奈奎斯特采样定义,fs>2f。注意这种说法用于实信号,因为实信号只有一半的带宽有效

采样率=信号带宽,使用条件是复数信号。现在rtl-sdr和hackrf都是这样 叫做 quadrature sampling system

高频信号都会有低频的对应。(通过摄像机(帧率=采样率)看飞机螺旋桨转速很高(高频)但看上去很慢(低频))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于复数的编程练习

  1. 气象站每分钟测量一次风向。编写程序 以指示五分钟内的平均方向。在 以下几组读数:
    • 12°, 15°, 13°, 9°, 16°
    • 358°, 1°, 359°, 355°, 2°
    • 210°, 290°, 10°, 90°, 170°
  2. 修改程序以处理风速输入以及方向。
  3. 利用图像显示结果
import cmath #复数运算的包
import math
tau = 2 * math.pi  #定义τ
def average(readings):
    base = math.e ** (1j * tau /360) #base是e的指数,1j为复数单位,即base在单位圆上,与纵轴正向夹角1弧度。
                                # 指数乘以τ再除以360相当于把整个圆粉分成360份
    total = 0
    for r in readings:
        total += base ** r  #每次相加的是角度r对应的复数,例r=1,即单位圆上横轴夹角为1的点的复数
    result = total /len(readings)   #先求向量平均然后取对数得到角度
    return cmath.log(result,base).real#返回值直接返回一个角度,是一个实数。
                            # cmath.log对结果进行对数运算,即用base的指数函数其指数表示角度来得到对应复平面上的点,如果有了这个点,取对数就能获得角度
print(average((12,15,13,9,16)))
print(average((358,1,359,355,2)))
#增加一个风速
def average(readings):
    base = math.e ** (1j * tau /360)
    total = 0
    for r in readings:
        total += r[1]*base ** r[0]  #增加系数
    result = total /len(readings)
    return cmath.log(result,base).real
print(average(((12,1),(15,1),(13,1),(9,1),(16,1))))
print(average(((12,1),(15,1),(13,1),(9,10),(16,1))))
#将风速值返回
def average(readings):
    base = math.e ** (1j * tau /360)
    total = 0
    for r in readings:
        total += r[1]*base ** r[0]  #增加系数
    result = total /len(readings)
    return cmath.log(result,base).real,abs(result) #对平均值向量取abs得到模就是风速的平均大小
print(average(((12,1),(15,1),(13,1),(9,1),(16,1))))
print(average(((12,1),(15,1),(13,1),(9,10),(16,1)))) #在9°的方向风速增强,影响最后得到的量
print(average(((210,1),(290,1),(10,1),(90,1),(170,1)))) #取了各个方向上的向量,因此在最后输出角度上的量对应大小很小

在这里插入图片描述

import cmath #复数运算的包
import math
from matplotlib.pylab import *
tau = 2 * math.pi  #定义τ
def average(readings):
    base = math.e ** (1j * tau /360)
    total = 0
    for r in readings:
        v = r[1] * base **r[0]
        total += v
        arrow(0,0,v.real,v.imag,head_width=0.05,head_length=0.05,fc='r',ec='r')
    result = total /len(readings)
    arrow(0,0,result.real,result.imag,head_width=0.05,head_length=0.05,fc='b',ec='b')
    xlim(-1.5,1.5)
    ylim(-1.5,1.5)
    xlabel('Real')
    ylabel('Imaginary')
    return (cmath.log(result,base).real,abs(result))
#average(((12,1),(15,1),(13,1),(9,1),(16,1)))
#average(((12,1),(15,1),(13,1),(9,10),(16,1))) #在9°的方向风速增强,影响最后得到的量
average(((210,1),(290,1),(10,1),(90,1),(170,1))) #取了各个方向上的向量,因此在最后输出角度上的量对应大小很小
plt.show()

在这里插入图片描述

将AM、FM用复数的概念进行分析

这部分对AM、FM的调制解调讲解的很新颖,值得回味

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chendy_00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值