python绘制函数曲线

之前一直使用matlab来画曲线,确实非常方便,但matlab作为商业软件,价格很贵,动辄好几个GB,安装很慢,并且还涉及license问题。
相对来说,python完全免费,只需要安装一个解释器,并且有很多科学计算库可以调用,所以后来就一直使用python来画曲线,记录下最近画的几条曲线。
环境:mac、pycharm、anaconda

1.sigmoid曲线

sigmoid曲线公式如下,可将值域限定在(0,1),在深度学习目标分类检测中常常用到,可限定坐标范围、分类概率。
在这里插入图片描述
使用如下python代码可以轻松画出sigmoid曲线,直接看代码,就不解释了。

import numpy as np
import math
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.1)
y = []
for t in x:
    y_1 = 1 / (1 + math.exp(-t))
    y.append(y_1)
plt.plot(x, y, label="sigmoid")
plt.xlabel("x")
plt.ylabel("y")
plt.ylim(0, 1)
plt.legend()
plt.show()

在这里插入图片描述
2.sin & cos曲线

import numpy as np
import math
import matplotlib.pyplot as plt
#sin & cos曲线
x = np.arange(0, 6, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1,label="sin")
plt.plot(x,y2,label="cos",linestyle = "--")
plt.xlabel("x")
plt.ylabel("y")
plt.title('sin & cos')
plt.legend()   #打上标签
plt.show()

在这里插入图片描述
3.lanczos曲线
lanczos曲线常常用在图像插值中,这个算法在放大和缩小中都能较好的抵制锯齿,在插值时,不仅有正的插值系数,也有负的系数,比较适用于自然图像。
在这里插入图片描述

import numpy as np
import math
import matplotlib.pyplot as plt
#lanczos曲线
x = np.arange(-6, 6, 0.1)
a1 = 2
a2 = 3
a3 = 5
y1 = np.sinc(x) * np.sinc(x/a1)
y2 = np.sinc(x) * np.sinc(x/a2)
y3 = np.sinc(x) * np.sinc(x/a3)
plt.plot(x,y1,label="a=2")
plt.plot(x,y2,label="a=3",linestyle="--")
#plt.plot(x,y3,label="a=5",linestyle="--")
plt.title('sinc')
plt.legend()   #打上标签
plt.show()

在这里插入图片描述

4.jpeg编码的qp曲线
jpeg的quality参数对应DCT变换的量化程度,quality(0-100)值越高,表示量化损失越小,编码质量越好。

import numpy as np
import math
import matplotlib.pyplot as plt
#jpeg编码的qp曲线
x = np.arange(0.1, 100, 0.1)        #从0.1到100,间隔0.1取点
y = []
for t in x:
    if t < 50:
        y_1 = 5000 / t
    else:
        y_1 = 200 - t * 2
    y.append(y_1)
plt.plot(x, y, label="qp-quality")
plt.xlabel("quality")
plt.ylabel("qp")
plt.ylim(0, 500)
plt.legend()    #显示label
plt.show()

在这里插入图片描述
上图中的纵坐标表示基于标准量化表的系数,也就是下面代码中的scale_factor,最终得到的temp值即为quality对应的量化表。

  for (i = 0; i < DCTSIZE2; i++) {
    temp = ((long)basic_table[i] * scale_factor + 50L) / 100L;
    /* limit the values to the valid range */
    if (temp <= 0L) temp = 1L;
    if (temp > 32767L) temp = 32767L; /* max quantizer needed for 12 bits */
    if (force_baseline && temp > 255L)
      temp = 255L;              /* limit to baseline range if requested */
    (*qtblptr)->quantval[i] = (UINT16)temp;
  }

参考
[1] https://github.com/libjpeg-turbo/libjpeg-turbo

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值