clear all
clc
[x,y,z]=meshgrid(linspace(-3,3)) % linspace(-3,3)生成-3到3的100个向量;meshgrid生成网格x,y,z
zz=sqrt(x.^2+y.^2)-1 %计算zz的值:zz=根号(x平方+y平方)-1
p=z.^2+zz.^2%计算p的值:p=z平方+zz平方
[faces,verts,colors]=isosurface(x,y,z,p,1,x)%将三维数组p的一系列值1,提取到faces,verts,colors中
pp=patch('Faces',faces,'Vertices',verts) %利用指定的属性/值参数对来指定补片对象的所有属性。
set(pp,'FaceColor','r','EdgeColor','none') %设置pp显示的颜色为红色,边的颜色没有
axis off % 删除坐标轴
camlight % 创建光源
lighting gouraud%照明设置:gouraud:先对顶点颜色插补,再对顶点勾划的面色进行插补,用于曲面表现。还有flat,phong和none
hold on% 保留现有的图
y1=0.05:0.05:0.8%生成y1向量,从0.05到0.8,步长0.05
x1=zeros(length(y1))+0.1%生成矩阵x1,zeros(length(y1))表示生成全0的矩阵,维度为(y1元素的个数)X(y1元素的个数),x1为元素全等于0.1的矩阵
z1=0.3+sqrt(y1)%计算z1:z1=0.3+根号y1
plot3(x1,y1,z1,'k','LineWidth',5)%画x1,y1,z1组成的三维图,颜色为黑色,线宽5
title('Merry christmas!')%加入标题:Merry christmas!
您好,如果全部代码是这么多的化,似乎多了一个end命令,两个for循环是对swh矩阵元素进行提取,if命令实现判断,如果swh值大于等于1小于等于4 ,则将Total矩阵对应位置元素加6。实际上matlab适合矩阵运算,建议减少循环命令的使用,多使用矩阵运算,matlab很强力,加油。。。fzero的功能是函数的数值求解,使用方式是outx= fzero(fun,x0)
其中fun是要求解函数的句柄,fun要求只有一个输入变量x
x0是你给出的初始x值,
函数会在这个初始x值开始在附近需找一个x值,使得fun返回值为0
返回值outx就是也就是找到fun=0的根
你程序原来有,x,y两组数据
首先用p=polyfit(x,y,2),将数据拟合为二次函数
然后x0 = fzero( @(x)polyval(p,x)-0.5, (x(1)+x(end))/2 )
就是用fzero 找出这个二次函数=0.5时的根
而(x(1)+x(end))/2就是原来数据的第一个值和最后一个值的平均值
在这里用这个平均值,作为初始值,在其附近寻找 二次函数=0.5这个方程的根
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)