【www.myl5520.com--自我介绍】
matlab中常见函数功用
篇一:matlab中的spline是什么边界条件
⊙在matlab中clear,clc,clf,hold作用介绍
clear是清变量,
clc只清屏,
clf清除图形窗口上的旧图形,
hold on是为了显示多幅图像时,防止新的窗口替代旧的窗口。
①format:设置输出格式
对浮点性变量,缺省为format short.
format并不影响matlab如何计算和存储变量的值。对浮点型变量的计算,即单精度或双精度,按合适的浮点精度进行,而不论变量是如何显示的。对整型变量采用整型数据。整型变量总是根据不同的类(class)以合适的数据位显示,例如,3位数字显示显示int8范围 -128:127。
format short, long不影响整型变量的显示。
format long 显示15位双精度,7为单精度(scaled fixed point)
format short 显示5位(scaled fixed point format with 5 digits)
format short eng 至少5位加3位指数
format long eng 16位加至少3位指数
format hex 十六进制
format bank 2个十进制位
format + 正、负或零
format rat 有理数近似
format short 缺省显示
format long g 对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式。
format short g 5位定点或浮点格式
format short e 5位浮点格式
format long e 双精度为15位浮点格式,单精度为7为浮点格式
②plot函数
基本形式
>> y=[0 0.58 0.70 0.95 0.83 0.25];
>> plot(y)
生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。
>> x=linspace(0,2*pi,30); % 生成一组线性等距的数值
>> y=sin(x);
>> plot(x,y)
生成的图形是上30个点连成的光滑的正弦曲线。
多重线
在同一个画面上可以画许多条曲线,只需多给出几个数组,例如
>> x=0:pi/15:2*pi;
>> y=sin(x);
>> w=cos(x);
>> plot(x,y,x,w)
则可以画出多重线。另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLAB将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。例如:
>> x=linspace(0,2*pi,30); y=sin(x); plot(x,y)
>> hold on
>> z=cos(x); plot(x,z)
>> hold off
线型和颜色
MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下:
线型 线方式: - 实线 :点线 -. 虚点线 - - 波折线。
线型 点方式: . 圆点 +加号 * 星号 x x形 o 小圆
颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青.
以下面的例子说明用法:plot(x,y,线形,颜色,线条宽度),
>> x=0:pi/15:2*pi;
>> y1=sin(x); y2=cos(x);
>> plot(x,y1,’b:+’,x,y2,’g-.*’)matlab中的spline是什么边界条件。
网格和标记
在一个图形上可以加网格、标题、x轴标记、y轴标记,用下列命令完成这些工作。
>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x);
>> plot(x,y,x,z)
>> grid
>> xlabel(‘Independent Variable X’)
>> ylabel(‘Dependent Variables Y and Z’)
>> title(‘Sine and Cosine Curves’)
也可以在图形的任何位置加上一个字符串,如用:
>> text(2.5,0.7,’sinx’)
表示在坐标x=2.5, y=0.7处加上字符串sinx。更方便的是用鼠标来确定字符串的位置,方法是输入命令:
>> gtext(‘sinx’)
在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。
坐标系的控制
在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有:
axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值 axis equal 或 axis(‘equal’) x轴和y轴的单位长度相同
axis square 或 axis(‘square’) 图框呈方形
axis off 或 axis(‘off’) 清除坐标刻度
还有axis auto axis image axis xy axis ij axis normal axis on axis(axis)用法可参考在线帮助系统。
多幅图形可以在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图,如
>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x);
>> u=2*sin(x).*cos(x); v=sin(x)./cos(x);
>> subplot(2,2,1),plot(x,y),axis([0 2*pi –1 1]),title(‘sin(x)’)
>> subplot(2,2,2),plot(x,z),axis([0 2*pi –1 1]),title(‘cos(x)’)
>> subplot(2,2,3),plot(x,u),axis([0 2*pi –1 1]),title(‘2sin(x)cos(x)’)
>> subplot(2,2,4),plot(x,v),axis([0 2*pi –20 20]),title(‘sin(x)/cos(x)’)
图形的输出
在数学建模中,往往需要将产生的图形输出到Word文档中。通常可采用下述方法:首先,在MATLAB图形窗口中选择【File】菜单中的【Export】选项,将打开形输出对话框,在该对话框中可以把图形以emf、bmp、jpg、pgm等格式保存。然后,再打开相应的文档,并在该文档中选择【插入】菜单中的【图片】选项插入相应的图片即可。
③zeros 和 ones 这两个函数是怎么用的
ones产生全1数组,zeros产生全零数组。
ones(a,b)产生a行b列全1数组
ones(a)产生a行a列全1叔祖
例如:
ones(1,3)产生1行3列全1数组[1 1 1]
ones(2)产生 1 1
1 1
zeros用法同ones,只是产生的是全0数组
④MATLAB中的length函数
在MATLAB中:
size:获取数组的行数和列数
length:数组长度(即行数或列数中的较大值)
numel:元素总数。
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。其中r=size(A,1)该语句返回的时数组A的行数, c=size(A,2) 该语句返回的时数组A的列数。
n=numel(A)该语句返回数组中元素的总数。
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数。
⑤【matlab】spline和ppval的意义
x=[0.1 0.05 0.02 0.01 0.005 0.001];
y=[100 94.68 72.10 41.82 27.13 11.69];
x1=log10(x);
y1=y;
figure,plot(x1,y1,'o')
xx=-3.0 : 0.04 : -1;
pp=spline(x1,y1);
y2=ppval(pp,xx)
figure,plot(xx,y2,'o')
xx=-3.0 : 0.04 : -1;%表示xx从-3.0开始每隔0.04取值到-1为止(即xx=[-3.0,-2.96,-2.92……,-0.96,-1])
pp=spline(x1,y1);%表示样条插值
y2=ppval(pp,xx)%插值曲线上,xx所对应的yy
可以把最后两句写成yy=spline(x1,y1,xx);
最后画出曲线plot(xx,yy,'-')就是等效于plot(xx,y2,'-')
⑥用法:linspace(x1,x2,N) linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。
相关函数:logspace 用法:x=logspace(a, b, n)
Matlab Spline 三次样条插值多项式表达式问题
篇二:matlab中的spline是什么边界条件
如何运用MATLAB 三次样条插值的问题,今天做作业,突然想用Matlab搞搞。
题目如下:
清华大学出版社的《数值分析(第5版)》
P49,20题。
x=[0.25 0.3 0.39 0.45 0.53];
y=[ 0.5 0.5477 0.6245 0.6708 0.7280 ]
pp=csape(x,y,'second',[0,0.0]);
disp(pp.coefs);
其中COEFS的含义是在Xi-Xi+1区间上的多项式是,例如COEFS数组第一行的意思是在X=0.25到X=0.3的区间上时表达式是-6.2652*(X-0.25)^3+0.9697*(X-0.25)^1+0.5;
-6.2652 0.0000 0.9697 0.5000
1.8813 -0.9398 0.9227 0.5477
-0.4600 -0.4318 0.7992 0.6245
2.1442 -0.5146 0.7424 0.6708
关于csape的用法引用自:
csape,是计算在各种边界条件下的三次样条插值。
pp = csape(x,y,conds)
其中conds主要有以下的选项variational(自然边界条件,首末点二阶导数均为0),second(指定首末点的二阶导数),periodic(周期性边界条件,首末点的0~2阶导数相等),complete(给定导数情况,默认)
function pp = csape(x,y,conds,valconds)
%pp=csape(x,y,'变界类型','边界值'),生成各种边界条件的三次样条插值. 其中,(x,y)为数据向量
%边界类型可为:'complete',给定边界一阶导数.
% 'not-a-knot',非扭结条件,不用给边界值.
% 'periodic',周期性边界条件,不用给边界值.
% 'second',给定边界二阶导数.
% 'variational',自然样条(边界二阶导数为0)
% .
%例 考虑数据
% x | 1 2 4 5
% ---|-------------
% y | 1 3 4 2
%边界条件S''(1)=2.5,S''(5)=-3,
% x=[1 2 4 5];y=[1 3 4 2];
% pp=csape(x,y,'second',[2.5,-3]);pp.coefs % xi=1:0.1:5;yi=ppval(pp,xi); % plot(x,y,'o',xi,yi);
定义边界条件
篇三:matlab中的spline是什么边界条件
定义边界条件
在Boundary菜单中选择Boundary mode选项,则显示几何模型的边界。选定要裁减的线条后,使用Boundary菜单的Remove Subdomain Border命令对其进行裁减。如图5-7所示:
图5-7(a) 地铁站台电场边界条件
图5-7(b) 地铁站台磁场边界条件
电场边界条件:内边界是接触轨、走行轨表面,内外边界都设置为Drichlet边界条件,接触轨电位为为750V,走行轨电位为0V,其余边界电位为0V。如图5-8(a),5-8(b)所示。
图5-8(a) 求解电场时接触轨轨边界条件的设定
图5-8(b) 求解电场时走行轨边界条件的设定
磁场边界条件:忽略站台外漏磁场影响整个模型外边界设置为Drichlet边界条件,A=0。如图5-8(c)所示。
图5-8(c) 求解磁场时的边界条件
然后进入PDE模式,显示子区域编号如图5-9所示:
图5-9 电场、磁场几何模型
分析地铁站台电场时,静电场是介电常数和空间电荷密度的函数。在求解域中空间内有0,而在0的情况下,介电常数取值不影响静电场分布情况。PDE的参数设定如5-10所示。
图5-10 站台电场PDE参数设定
分析地铁站台磁场时,静磁场是磁导率和电流密度J的函数。其中
J
I
(5-1) S
式中I为钢轨电流的大小(A),S为钢轨横截面积(m2)。
I
(5-2) P
式中I为钢轨电流的大小(A),P为钢轨横截面周长(cm)。
H
由于相对磁导率能更方便地表征磁介质磁性,因此用r代替以简化求解过程。由实验得到的r(H)函数曲线即可确定相对磁导率[13],如图5-11所示。
r
60050040030020010000246
81012141618202224262830H(A/cm)
图5-11 钢轨的r(H)函数曲线图
磁场接触轨参数:接触轨的电流为1000A,应用公式(5-1)得电流密度
J1000/0.00654152905A/m2;由公式(5-2)得磁场强度
H1000/5518.2A/cm。根据图5-11r(H)函数曲线得接触轨的相对磁导率r
为394。如图5-12(a)所示。
图5-12(a) 站台磁场接触轨PDE参数设定
磁场走行轨参数:在计算走行轨电流时应考虑杂散电流的影响,取杂散电流为总电流的10%,所以走行轨电流为1000(110%)/2450A,应用公式(5-1)
A/m2,得走行轨电流密度J450/0.0065768493由于走行轨电流方向和接触轨A/m2。应用公式(5-2)得走行轨磁场强度方向相反,所以电流密度取68493
H450/627.26A/cm,根据图5-11r(H)函数曲线可得走行轨的相对磁导率
r为481。如图5-12(b)所示。
图5-12(b) 站台磁场走行轨PDE参数设定
其余区域参数设定为1,J为0。如图5-12(c)所示。
图5-12(c)站台磁场剩余区域PDE参数设定
下一步进入Mesh模式,在这里可以设置网格的划分方式如最大边长度,网格细化比例等。在parameters中设置,如图5-13所示:
三次样条插值自然边界条件
篇四:matlab中的spline是什么边界条件
例:已知一组数据点
次样条插值函数满足
并针对下面一组具体实验数据
,编写一程序求解三 . 求解,其中边界条件为matlab中的spline是什么边界条件。
1)三次样条插值自然边界条件源程序:
function s=spline3(x,y,dy1,dyn)
%x为节点,y为节点函数值,dy1,dyn分别为x=0.25,0.53处的二阶导
m=length(x);n=length(y);
if m~=n
error('x or y输入有误')
return
end
h=zeros(1,n-1);
h(n-1)=x(n)-x(n-1);
for k=1:n-2
h(k)=x(k+1)-x(k);
v(k)=h(k+1)/(h(k+1)+h(k));
u(k)=1-v(k);
end
g(1)=3*(y(2)-y(1))/h(1)-h(1)/2*dy1;
g(n)=3*(y(n)-y(n-1))/h(n-1)+h(n-1)/2*dyn;matlab中的spline是什么边界条件。
for i=2:n-1
g(i)=3*(u(i-1)*(y(i+1)-y(i))/h(i)+v(i-1)*(y(i)-y(i-1))/h(i-1)); end
for i=2:n-1;
A(i,i-1)=v(i-1);
A(i,i+1)=u(i-1);
end
A(n,n-1)=1;
A(1,2)=1;
A=A+2*eye(n);
M=zhuigf(A,g); %调用函数,追赶法求M
fprintf('三次样条(三对角)插值的函数表达式\n');
syms X;
for k=1:n-1
fprintf('S%d--%d:\n',k,k+1);
s(k)=(h(k)+2*(X-x(k)))./h(k).^3.*(X-x(k+1)).^2.*y(k)...
+(h(k)-2*(X-x(k+1)))./h(k).^3.*(X-x(k)).^2.*y(k+1)... +(X-x(k)).*(X-x(k+1)).^2./h(k).^2*M(k)+(X-x(k+1)).*... (X-x(k)).^2./h(k).^2*M(k+1);
end
s=s.';
s=vpa(s,4);
%画三次样条插值函数图像
for i=1:n-1
X=x(i):0.01:x(i+1);
st=(h(i)+2*(X-x(i)))./(h(i)^3).*(X-x(i+1)).^2.*y(i)...
+(h(i)-2.*(X-x(i+1)))./(h(i)^3).*(X-x(i)).^2.*y(i+1)...
+(X-x(i)).*(X-x(i+1)).^2./h(i)^2*M(i)+(X-x(i+1)).*...
(X-x(i)).^2./h(i)^2*M(i+1);
plot(x,y,'o',X,st);
hold on
End
plot(x,y);
grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%调用的函数:
%追赶法
function M=zhuigf(A,g)
n=length(A);
L=eye(n);
U=zeros(n);
for i=1:n-1
U(i,i+1)=A(i,i+1);
end
U(1,1)=A(1,1);
for i=2:n
L(i,i-1)=A(i,i-1)/U(i-1,i-1);
U(i,i)=A(i,i)-L(i,i-1)*A(i-1,i);
end
Y(1)=g(1);
for i=2:n
Y(i)=g(i)-L(i,i-1)*Y(i-1);
end
M(n)=Y(n)/U(n,n);
for i=n-1:-1:1
M(i)=(Y(i)-A(i,i+1)*M(i+1))/U(i,i);
end
2)在命令窗口输入x,y,dy1,dyn,得到三次样条函数:
>>x=[0.25,0.3,0.39,0.45,0.53];
>>y=[0.5,0.5477,0.6245,0.6708,0.7280];
>>dy1=0;
>>dyn=0;
>>s=spline3(x,y,dy1,dyn)
运行结果:
三次样条(三对角)插值的函数表达式
S1--2:
S2--3:
S3--4:
S4--5:
.5000*(-3600.+.1600e5*X)*(X-.3000)^2+.5477*(5200.-.1600e5*X)*(X-.2500)^2+394.8*(X-.2500)*(X-.3000)^2+355.2*(X-.3000)*(X-.2500)^2
.5477*(-699.6+2743.*X)*(X-.3900)^2+.6245*(1193.-2743.*X)*(X-.3000)^2+109.6*(X-.3000)*(X-.3900)^2+96.77*(X-.3900)*(X-.3000)^2
.6245*(-3333.+9259.*X)*(X-.4500)^2+.6708*(4444.-9259.*X)*(X-.3900)^2+217.7*(X-.3900)*(X-.4500)^2+207.6*(X-.4500)*(X-.3900)^2
.6708*(-1602.+3906.*X)*(X-.5300)^2+.7280*(2227.-3906.*X)*(X-.4500)^2+116.8*(X-.4500)*(X-.5300)^2+109.2*(X-.5300)*(X-.4500)^2
如将三次样条函数加以整理,可用如下程序:
s=collect(s);
则输出结果为:
s=
.4595000000000-13.200*X^3+9.9000000*X^2-1.48800000000*X .37459306800000-4.2924*X^3+3.66332200*X^2-.137976090000*X .5180681700000-3.3917*X^3+3.90576600*X^2-.733130370000*X -.408614400000e-1+2.5768*X^3-4.03188800*X^2+2.868770320000*X