Matlab学习笔记---向量与多项式

向量定义

  1. 直接生成,向量元素用 [] 括起来,直接可以为空格和逗号(代表在下一列),分号(表示下一行)
    例如:x=[1 2 5 4;4 5 8 2]
  2. 冒号法:x=first:step:end 表示:从first每隔step取一个数字,直到end,形成一个行向量
    例如:x=1:2:5 -------x=[1 3 5]
  3. 函数法:
    利用linspace(first,end,number):从first 到 end 取number个数
    利用logspcae(first,end,number):从10的frist次到10的end次取number个数

向量元素的引用

x(n)表示x中的第n个元素
x(n1:n2)表示从n1到n2个元素

都是一行一行算的

向量的运算

四则运算:和数学上的一样,就是计算的时候是先把向量拆开,每一个元素进行运算,再合并成一个向量,例如:
x=[1 2],x+1=[2,3]

点积叉积
dot(a,b),a和b必须同维cross(a,b),a和b必须是三维的

多项式

创建

  1. 直接输入,以字符串的形式输入
  2. 先给出p作为多项式的系数向量,在调用poly2sym( p )来生成多项式

四则运算

  1. 加减法都是向量的加减法
  2. 乘法==卷积:conv(p1,p2),p1,p2是两个多项式的系数向量,注意,向量一定要同维
  3. 除法==解卷:[k,r]= deconv(p1,p2),k的p1/p2的商,r是余式

导数运算

  1. 利用polyder( p )函数求导,同样p为系数向量

特殊变量

单元型变量结构型变量
创建:1.赋值语句直接定义 2.cell()函数创建,参数和rand函数的参数相同创建:用struct()来创建
通过下标访问,本质就是一个数组,小括号访问该处元素的形式,大括号访问具体内容下标访问(和c的结构体类似)
单元型变量函数作用
cell()生成单元型变量
cellfun()对变量中的每一个元素调用函数,用法cellfun(函数,单元型变量)
celldisp()显示单元型变量的内容,用法:celldisp(单元型变量)/celldisp(单元型变量,显示时的名称)
cellplot()用图形显示变量,用法:cellplot(单元型变量)/cellplot(单元型变量,‘legend’)
iscell()判断是否为单元型变量
reshape()改变单元数组的结构
结构型变量函数作用
fieldnames()获取结构性变量的名称
getfield()得到结构性变量的属性值
setfiled()设定结构性变量的属性值
isfield判断是否为结构性变量的属性
isstruct判断是否为结构性变量
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MATLAB中进行3-5阶Zernike多项式畸变的仿真,你可以使用光学工具箱(Optics Toolbox)和Zernike多项式函数。下面是一个简单的示例代码,演示如何在MATLAB中进行3-5阶Zernike多项式畸变的仿真: ```matlab % 导入光学工具箱 import matlab.optics.* % 定义系统参数 wavelength = 0.5; % 光波长(单位:微米) aperture_diameter = 1; % 光圈直径(单位:毫米) focal_length = 10; % 焦距(单位:毫米) % 创建光线传播对象 optSystem = opticalSystem; optSystem.SystemAperture = aperture('shape','circular','radius',aperture_diameter/2); % 光圈形状和大小 optSystem.ObjectDistance = Inf; % 物距无穷远(平行光入射) optSystem.ImageDistance = focal_length; % 成像距离等于焦距 optSystem.Wavelength = wavelength; % 设置光波长 % 添加Zernike多项式畸变 zernike_coefficients = [0.1, 0.2, 0.3, 0.4, 0.5]; % Zernike系数 zernike_modes = {'piston', 'tilt x', 'tilt y', 'defocus', 'astigmatism'}; % Zernike模态名称 for i = 1:numel(zernike_modes) optSystem.Surface{i}.Glass = glass('BK7'); % 使用BK7玻璃 optSystem.Surface{i}.Radius = focal_length; % 曲率半径等于焦距 optSystem.Surface{i}.Shape = zernikeMode(zernike_modes{i}, zernike_coefficients(i)); % 使用Zernike模态和对应系数 end % 计算波前畸变 wavefront = computeWavefront(optSystem); % 可视化波前畸变 figure; show(wavefront); % 显示像差图 figure; show(wavefront,'WavefrontPhase'); % 显示畸变后的光斑 figure; show(wavefront,'SpotDiagram'); % 显示畸变前后的光斑对比 figure; show(wavefront,'SpotDiagram','comparison'); ``` 上述代码首先导入光学工具箱,并定义了系统的参数,包括光波长、光圈直径和焦距。然后创建了光线传播对象,并设置光圈形状、物距和成像距离等参数。接着添加了Zernike多项式畸变,使用了3-5阶的Zernike系数和对应的Zernike模态名称。最后计算波前畸变并可视化结果,包括波前畸变图、像差图和光斑图。 你可以根据需要调整Zernike系数和模态名称,以及进一步分析和可视化波前畸变效应。希望对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值