Origin中的复数表示和计算

通常我们使用Origin处理的都是实数数据,但是其实Orgin也可以进行复数的统计计算。在某些特定的使用场景中会用到此功能,比如复介电常数的计算。本文主要介绍Origin中复数的表示,复数的计算以及复数相关的函数。 Origin里面有两种定义复数的方法。一是使用"x+yi"的方式定义复数,这种方式最简单和直接;另一种方式是使用Real2complex(x,y)来定义,其中x,y分别是实部和虚部。值得注意的是,无论是使用哪种定义方式,一定要在"Properties"里面将"Format" 和"Data type"分别改为"Numeric"和"Complex",否则复数的虚部无法显示出来。 使用ImReal和Imaginary函数即可提取复数的实部和虚部。 Origin里可以直接使用+,-,*,/进行四则运算。 Origin里面也内置一些常见的复数的函数,主要是一些数学函数,比如复数开方Imsqrt ,正弦Imsin。 用直角坐标系的横轴表示实数,纵轴表示虚数,此时坐标系里的点与复数集一一对应,这样的坐标系称为复数平面。我们在Origin里面使用ImReal和Imaginary函数提取复数的实部和虚部,即可在复数平面中标注出他们的位置。  
Origin中的复数表示和计算

用MATLAB画一个地球

MATLAB是强大的数据处软件,同时也是绝佳的绘图工具,或许我们可以尝试用MATLAB画一个地球! 我们都知道“三分陆地,七分海洋”的地球主色调是蓝色,并且南北极常年被冰雪覆盖导致地球两极呈白色,因此我们先画一个“白-蓝-白”渐变的球。sphere生成球的坐标,然后使用surf绘制球面。选择白色和蓝色,使用interp1插值得到“白-蓝-白”渐变的colormap。 clc; clear; close all; =sphere(99); surf(a,b,c,EdgeColor="none"); bg_color=; bwmap = '; colormap(bwmap); 地球除了海洋就是陆地,我们看到的陆地其实是被海洋“覆盖”剩余的部分,因此我们绘制的地球也可以利用这种“覆盖”的方法生成分散的大陆。利用vecnorm归一化得到球体上的坐标,乘以系数1.03使得陆地比海面高。将得到的球体坐标利用delaunay生成网格化球体,就得到了陆地。此时,我们故技重施构造一个黄绿色的colormap,并用patch给陆地“染色”。由于海洋的“覆盖”,剩下的陆地就呈分散的大陆。 hold on; lx=randn(3,99); lx=1.03*lx./vecnorm(lx); lp=delaunay(lx'); land_map = '; lh = patch('faces',lp,'vertices',lx', FaceVertexCData=land_map,FaceAlpha = 0.40); shading interp; 此时的地球看起来还略显单调,缺少陆地之上的白色云层。云层的绘制的方法与陆地一样,只不过我们需要一个稍微大点的球,所以系数设置为1.04。设置colormap色调为白色,FaceAlpha减小为0.2,增加云层的透明度。 cx=randn(3,999); cx=1.04*cx./vecnorm(cx); cp=delaunay(cx'); cloud_map = '; ch = patch('faces',cp,'vertices',cx', FaceVertexCData=cloud_map,FaceAlpha = 0.20); shading interp; 最后,我们换一个黑色的太空背景,再在周围用scatter画点星星作为点缀。地球就画好啦! set(gcf,'color','k'); r=@()rand(1,300); scatter(r()*10-5,r()*10-5,r().^2*200,'.w'); camva(2); clc;clear;close all; =sphere(100); surf(a,b,c,EdgeColor="none"); bg_color=; bwmap = '; colormap(bwmap); hold on; lx=randn(3,99); lx=1.03*lx./vecnorm(lx); lp=delaunay(lx'); land_map = '; lh = patch('faces',lp,'vertices',lx', FaceVertexCData=land_map,FaceAlpha = 0.40); shading interp; axis equal off; cx=randn(3,999); cx=1.04*cx./vecnorm(cx); cp=delaunay(cx'); cloud_map = '; ch = patch('faces',cp,'vertices',cx', FaceVertexCData=cloud_map,FaceAlpha = 0.20); shading interp; set(gcf,'color','k'); r=@()rand(1,300); scatter(r()*10-5,r()*10-5,r().^2*200,'.w'); camva(2);
用MATLAB画一个地球