sin

python3 的matplotlib的三角函数sin和cos的静态作图详述

有些话、适合烂在心里 提交于 2020-04-08 11:55:26
感谢作者分享- http://bjbsair.com/2020-04-07/tech-info/30778.html 1.说明: 1.1 推荐指数:★★★ 1.2 基础知识:三角函数sin和cos,在计算机编程中,尤其python中,应用到画圆很重要。 1.3 用通俗易懂的方式,来讲解,三角函数的matplotlib作图,静态图,为以后的画圆打基础。 1.4 为了突出重点,暂时不提中文设置。复习matplotlib作图的基础知识,深入了解sin和cos的关系。 1.5 适合学习人群:小白、学生、老师、爱好作图人员和计算机编程人员阅读。 2.理论: 比如: r = 1 #假设半径为1 # 0~2π(一圈,一个π是半圈,步长=0.01,步长越小图线越平滑) a = np.arange(0,2*np.pi,0.01) #圆的坐标点与三角函数的关系 x = r*np.cos(a) y = r*np.sin(a) #画圆 plt.plot(x,y,color='red') 3.sin正弦函数 3.1 静态:sin-s 3.2 代码:简洁版 #---导出模块--- import matplotlib.pyplot as plt import numpy as np #定义坐标关系 x = np.arange(-2*np.pi,2*np.pi,0.1) y = np.sin(x) #画线 plt

5. matlab入门——图形标注、特殊绘图、三维绘图

会有一股神秘感。 提交于 2020-04-06 02:34:32
1、图形标注 (1)图形标题   title(标题)   title(标题,属性名,属性值) %% 图形标注 x = 0:0.11:2*pi; y = sin(x); plot(x,y); title('y=sin(x)示范','color','r'); (2)坐标轴标签   xlabel(标签,属性名,属性值)   ylabel(标签,属性名,属性值) %% 坐标轴标签 x = 0:0.11:2*pi; y = sin(x); plot(x,y); xlabel('X轴数据示范','color','r','fontsize',12); ylabel('Y轴数据示范','color','b','fontsize',12); title('y=sin(x)示范','color','r'); (3)图例   legend(图例说明) %% 图例 x = 0:0.11:2*pi; y1 = sin(x); y2 = cos(x); y3 = sin(x)+cos(x); plot(x,[y1;y2;y3]); legend('sin(x)','cos(x)','sin(x)+cos(x)'); 2、特殊绘图 (1)柱状图bar   bar(y)   bar(x,y)   barh(x,y)   bar(y,'stacked') 堆积图 %% 柱状图 y = rand(5,3); bar

【Linux】Linux C socket 编程之UDP

孤人 提交于 2020-04-04 16:32:59
发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后再发送一个终止消息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> int port=6789; int main(int argc, char** argv) { int socket_descriptor; //套接口描述字 int iter=0; char buf[80]; struct sockaddr_in address;//处理网络通信的地址 bzero(&address,sizeof(address)); address.sin_family=AF_INET; address.sin_addr.s_addr=inet_addr("127.0.0.1");//这里不一样 address.sin_port=htons(port); //创建一个 UDP socket socket_descriptor=socket(AF

经纬度与平面坐标互转,经纬度与空间直角坐标互转(C++代码)

戏子无情 提交于 2020-03-28 02:45:10
在三维激光点云处理中,需经常用到经纬度与平面坐标、空间直角坐标互转的功能,有时只是临时写一个测试demo,不想调用gdal,太麻烦,希望有更简单的调用方式。 网上一通搜索,并没有找到很完整的代码,一些代码杂乱无章,正确性还需确认,于是自己动手写了这四个转换函数,在此与大家分享使用: 头文件: /******************************************************************* * * 作者: Sun Zhenxing * 创建日期: 20190819 * * 说明:实现经纬度与平面坐标互转,实现经纬度与空间直角坐标互转 * ******************************************************************/ #ifndef ZTGEOGRAPHYCOORDINATETRANSFORM_H #define ZTGEOGRAPHYCOORDINATETRANSFORM_H #include <math.h> struct EllipsoidParameter { double a, b, f; double e2, ep2; // 高斯投影参数 double c; double a0, a2, a4, a6; EllipsoidParameter() { // Default:

Matrix学习——基础知识

陌路散爱 提交于 2020-03-26 04:56:27
以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明。 首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部分。为什么分割成4部分,在后面详细说明。 首先给大家举个简单的例子:现设点P0(x0, y0)进行平移后,移到P(x,y),其中x方向的平移量为△x,y方向的平移量为△y,那么,点P(x,y)的坐标为: x = x0 + △x y = y0 + △y 采用矩阵表达上述如下: 上述也类似与图像的平移,通过上述矩阵我们发现,只需要修改矩阵右上角的2个元素就可以了。 我们回头看上述矩阵的划分: 为了验证上面的功能划分,我们举个具体的例子:现设点P0(x0 ,y0)进行平移后,移到P(x,y),其中x放大a倍,y放大b倍, 矩阵就是: ,按照类似前面“平移”的方法就验证。 图像的旋转稍微复杂:现设点P0(x0, y0)旋转θ角后的对应点为P(x, y)。通过使用向量,我们得到如下: x0 = r cosα y0 = r sinα x = r cos(α+θ) = x0 cosθ - y0 sinθ y = r sin(α+θ) = x0 sinθ + y0 cosθ 于是我们得到矩阵: 如果图像围绕着某个点(a ,b)旋转呢?则先要将坐标平移到该点,再进行旋转

Matlab画图

余生颓废 提交于 2020-03-26 04:19:49
http://blog.sina.com.cn/s/blog_4ac35a650100r24v.html 图形的控制与表现 (Figure control and representation) MATLAB提供的用于图形控制的函数和命令: axis: 人工选择坐标轴尺寸. clf:清图形窗口. ginput: 利用鼠标的十字准线输入. hold: 保持图形. shg:显示图形窗口. subplot: 将图形窗口分成N块子窗口。 1.图形窗口(figure window) (1). 图形窗口的创建和选择(Creating and selecting of figure window) figure(n):用于为当前的绘图创建图形窗口,每运行一次figure就会创建一个新的图形窗口,n表示第n个 窗口,如果窗口定义了句柄,也可以用figure(h)将句柄h的窗口作为当前窗口。 clf :用于清除当前图形窗口中的内容。 shg :用于显示当前图形窗口。 (2). 在一个图形窗口中绘制多个子图形(Drawing several subfigures in a single window) subplot(m,n,p):把窗口分成m×n个小窗口,并把第p个窗口当作当前窗口。 例:将4 个图形显示在同一个图形窗口中。 t=0:pi/20:2*pi; [x,y]=meshgrid(t);

关于矩阵

孤街浪徒 提交于 2020-03-21 22:42:27
本章所写都是通过对《工程学线性代数》和《3D数学基础:图形与游戏开发》理解所写 “不幸的是,没人告诉您矩阵像什么——您必须自己去感受。” 来自《 黑客帝国 》对白 .我们曾宣称矩阵表达坐标转换,多以当我们观察矩阵的时候,我们是在观察转换,观察新的坐标系。打这个转换开起来像什么?特定的3D矩阵(旋转,放射等)和3X3矩阵的9个数字之间有什么关系?怎么样构建一个矩阵来做这个转换(而不是盲目的照搬书上的公式)?——3D数学基础 矩阵分为实矩阵和复矩阵,元素是实数的矩阵为实矩阵,元素是复数的为复矩阵。 关于复数: http://www.cnblogs.com/ThreeThousandBigWorld/archive/2012/07/21/2602588.html 单位矩阵我们记做E 转置矩阵: 用 ' 表示转置因为右上角的小t打不出来,a为实数 1)(A')' = A; 2) (A+B)' = A' + B'; 3) (aA)' = aA'; 4) (AB)' = B'A'. 由n阶方阵A的元素所构成的行列式(个元素的位置不变),称为方阵A的行列式,记做|A|或detA 1)|A'| = |A| 2) |aA| = a^n|A| 3) |AB| = |A||B| 伴随矩阵: 行列式|A|的各个元素的代数余子式Aij所构成的矩阵然后再转置就是矩阵A的 伴随矩阵 , 记做A* AA* = A

面向对象设计入门一:表达式求导

时光怂恿深爱的人放手 提交于 2020-03-18 22:46:49
一.多项式求导 (一)对象和方法设计 根据定义,多项式是由若干符号和项交替组成。和求导规则决定多项式求导等价对每个项求导。因此考虑一个项类,包含两个Biginteger类型数据次幂和系数,对应幂指数求导方法,toString()方法。为了化简,提供一个判断是否系数是负数的布尔值方法来判断表达式这一项前是否需要‘+’。表达式本质上转化为项的集合,为化简则选用不可重复集合。 在主类中,按照工作流程分别设置静态方法输入分析,表达式求导和静态输出。保证输入正确性降低了鲁棒性要求,处理合法空白字符后直接使用正则表达式读取符号和表达式项组合,进而获得一个项类。表达式求导和静态求导就是遍历。 (二)对比作业程序和结果 在对象上,并没有考虑项类,而是直接考虑了Hashmap的不可重复Biginteger组,优点是省事、简单粗暴。缺点是丧失面向对象的结构特征,使得所有代码都在主类中且都是静态方法。像极了面向函数编程。 HashMap<BigInteger,BigInteger> polyContent = new HashMap<>(); 输入处理上,首先是采用了大正则的形式,关键是忘记去空格预处理,用捕获组提取项。 Pattern p = Pattern.compile("\\s*([+-]\\s*)?((([+-]?\\d+\\s*\\*\\s*|[+-]\\s*)?x(\\s*\\*\\*\

2020北航OO表达式求导作业总结

我的未来我决定 提交于 2020-03-18 22:40:21
三次作业的思路与bug测试 第一次作业 ​ 第一次作业内容为简多项式单导函数的求解,项包含常数项(带符号整数)与变量项(系数与幂函数的乘积),表达式由加法和减法运算符连接若干项组成。且输入中确保格式的正确性。 1.1 实现方案 根据需求,我们很容易联想到用 HashMap 表示每一项中幂函数指数与系数的对应关系。而且因为这是第一次作业,我没有考虑可扩展性,直接在多项式类 Ploy 中使用了类型为 HashMap<BigInteger,BigInteger> 的 ploy 作为存储的数据结构。 数据层次:根据指导书表述,容易联想到建立指数与系数的 HashMap 来表示多项式,我建立了多项式类 Ploy ,项类 Term ,主类 MainClass 。 输入解析:我采用了按项拆分字符串的方法,提取过程中应用了正则表达式。 三次作业包你掌握正则表达式(●'◡'●) 求导功能:我在Ploy类中实现了 diffPloy() 方法,该方法会返回一个求导后的导函数,即一个新的Ploy对象。 输出:我在Ploy类中实现了 printFirst() 方法。 优化方面:实现了合并同类项、正项先输出、零项不输出、系数为1或-1时省略。 ①在 MainClass 里实例化 Ploy 对象 ploy,借用正则表达式将输入的字符串拆为单项的字符串,将拆好的字符串扔进 Term

Ynoi2012 NOIP2015洋溢着希望

北战南征 提交于 2020-03-18 07:07:35
写篇博客纪念一下人生第一道 \(YnOI\) 不过这个题确实是不复杂 Description link 支持两种操作,区间加和区间 \(sin\) 和 \(n,m \le 2 \times 10^5\) Solution \[Begin\] 我们看到三角函数,还有加法 还是比较明显地指向了和角公式 如果不会和角公式? 这个百度应该可以 $ Get $ 到 \(sin(a+b)=sin(a) cos(b)+cos(a)sin(b)\) \(cos(a+b)=cos(a)cos(b)-sin(a)sin(b)\) \(sin\) 和 \(cos\) 的都用库里的函数就行 我们维护一下每个点的 \(sin\) 和 \(cos\) 就可以了吧…… 具体要这么写: inline void push_up(int p,double ts,double tc) { double s=sinn(p),c=coss(p); sinn(p)=ts*c+tc*s; coss(p)=tc*c-ts*s; return ; } inline void spread(int p) { if(fl(p)) { fl(p<<1)+=fl(p); fl(p<<1|1)+=fl(p); double ts=sin(fl(p)),tc=cos(fl(p)); push_up(p<<1,ts,tc); push_up(p