matlab网格算法
‘壹’ 怎么用matlab画三维网格
绘制立方网格matlab代码如下
m=3;n=3;h=3;
%定义数据的规模
Hx=1;Hy=1;Hz=1;
H=(h-1)*m*n;
CN=m*n*h;
N=m*n;
[x,y,z]=meshgrid(0:Hx:(n-1)*Hx,0:Hy:(m-1)*Hy,0:Hz:(h-1)*Hz);
Cube=reshape(1:N*h,m,n,h);
MN=2*m*n-m-n;
X=zeros(CN,1);Y=X;Z=X;
fori=1:m
forj=1:n
fork=1:h
X(Cube(i,j,k))=x(i,j,k);
Y(Cube(i,j,k))=y(i,j,k);
Z(Cube(i,j,k))=z(i,j,k);
end
end
end
linkN=0;
Img=sqrt(-1);
AA=zeros(H+h*MN,1);
fork=1:h-1
forj=1:n
fori=1:m
linkN=linkN+1;
AA(linkN)=Cube(i,j,k)+Img*Cube(i,j,k+1);
end
end
end
fork=1:h
forj=1:n-1
fori=1:m
linkN=linkN+1;
AA(linkN)=Cube(i,j,k)+Img*Cube(i,j+1,k);
end
end
forj=1:n
fori=1:m-1
linkN=linkN+1;
AA(linkN)=Cube(i,j,k)+Img*Cube(i+1,j,k);
end
end
end
figure;
plot3(X,Y,Z,'r.')
%--plotbond-----
axisequal
P1=real(AA);P2=imag(AA);
line([X(P1)';X(P2)'],[Y(P1)';Y(P2)'],[Z(P1)';Z(P2)'],'color','b')
‘贰’ 如何用matlab画网格图
绘制网格图:mesh(X,Y,Z);
1、三维曲面或网线图的数据准备:
要绘制函数z=f(x,y)所代表的三维空间曲面,需要做以下准备:
(1) 确定自变量x,y的取值范围和间隔,x=x1:dx:x2,y=y1:dy:y2;
(2)构成xoy面上的自变量格点矩阵,[X,Y]=meshgrid(x,y);
(3)获得自变量在格点上的函数值,即Z=f(X,Y)。
2、绘制曲面或网线图的命令:
绘制曲面:surf(X,Y,Z);
绘制网线:mesh(X,Y,Z);
(2)matlab网格算法扩展阅读:
二维绘图函数plot:
1、经典调用格式:plot(x,y,'s')
说明:x,y分别为自变量和对应的因变量,以确定横坐标和纵 坐标;输入量s用来确定线性和颜色,可以组合使用。
2、plot衍生调用格式 :plot(X,Y, 's')/plot(X,Y)
说明:当X和Y均为m×n数组时,将选取X的第i列和Y的第i列 作为一对自变量和因变量,绘制出n条曲线。
参考资料:网络-MATLAB
‘叁’ 如何在matlab中进行图像的网格划分
xiegangmai(站内联系TA)用mesh命令,具体使用方法请参考MATLAB帮助whxn(站内联系TA)如果已知的数据是按一定间隔分布的,那你可以先用=meshgird(x0:dx:xx,y0:dy:),如果不是等间隔的你需要自己写上一行横坐标,一行纵坐标,来得到需要的网格点的横,纵坐标;令z = zeros(size(x))+0.2(这个随便写);然后mesh(x,y,z),再调整视角为俯视,代码如下
'LineWidth',1);>> view(2)>> axis equal
>> axis off
然后就可以了。
或者我猜测,pcolor(x,y),然后调整colorbar的取值范围为0、
‘肆’ 如何在matlab中进行图像的网格划分。
可以使用meshgrid函数
meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应用,函数效果如下图所示:
函数功能:
生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y)
例如, 要在“3<=x<=5,6<=y<=9,z不限制区间” 这个区域内绘制一个3-D图形,如果只需要整数坐标为采样点的话。可能需要下面这样一个坐标构成的矩阵:
(3,9),(4,9),(5,9);
(3,8),(4,8),(5,8);
(3,7),(4,7),(5,7);
(3,6),(4,6),(5,6);
在matlab中可以这样描述这个坐标矩阵:
把各个点的x坐标独立出来,得:
3,4,5;
3,4,5;
3,4,5;
3,4,5;
再把各个点的y坐标也独立出来:
9,9,9;
8,8,8;
7,7,7;
6,6,6;
这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x, y)计算获得z,并绘制出三维图形。
在Matlab命令窗口中键入type meshgrid可以查看该函数的源代码(由此可以理解meshgrid的算法思想), 键入doc meshgrid或者help meshgrid可以获得帮助文档。
语法
[X,Y] =meshgrid(x,y)
meshgrid返回的两个矩阵X、Y必定是行数、列数相等的,且X、Y的行数都等于输入参数y中元素的总个数,X、Y的列数都等于输入参数x中元素总个数(这个结论可以通过查看meshgrid的源代码得到,可以通过示例程序得到验证)。
[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的
[X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图
相关函数: plot3、mesh、surf、automesh、ndgrid
‘伍’ MATLAB中离散点画网格
已知离散点画三维网格,可以按下列步骤来实现:
1、建立三维坐标的分向量,即
x=[。。。];y=[。。。];z=[。。。]
2、根据模型f(x,y)=a0 + a1*x + a2*y,用拟合函数regres()拟合出其拟合系数。
a 0= 4.3884;a 1= 1.0217;a 2=-762.9873
3、将x,y平面数据网格化,[X,Y]=meshgrid(x,y),然后求出Z=f(X,Y)。最后,用mesh(X,Y,Z)绘出其网格图。
运行结果
‘陆’ 如何用matlab画网格图
加上下面的程序
[X,Y]=meshgrid(min(x):50:max(x),min(y):50:max(y));%确定网格坐标(x和y方向的步长均取0.1)
Z=griddata(x,y,z,X,Y,'cubic');%插值求Z
然后再用mesh应该就可以了!
‘柒’ matlab如何做出网格,如何将离散的点连续化
这个简单,举个例子给你:
定义11个离散点如下,
x=[1234567891011];y=[0.80.30.2-0.40.60.2-0.10.30.15-0.20.2];
xx=1:0.01:11;
yy=spline(x,y,xx);
plot(x,y,'o',xx,yy),grid
matlab仿真图就是这样的。
‘捌’ 网格中如何求任意两点间的最短路径 matlab算法
function [L,Z]=dijkstra(W,S,T)
%用 Dijkstra 算法求最短路径
% 算法
% 1. 对每个点I指定一个离点S的距离初始值L(I). 在始点S的值为零, 即L(S)=0,其它点的值为Inf.
% 2. 所有的点标记为未走访的. 置始点S为当前点C.
% 3. 对于当前点C, 考虑它的所有未走访的相邻点J, 并更新J的距离值为
% L(J)=min(L(J), L(C)+W(C,J))
% 4. 把当前点C标记为走访过的点. 走访过的点C的距离L(C)就是点S到C的最短距离, 而且以后不再检查走访过得点了.
% 5. 如果所有的点都是走访过的点, 完成. 不然, 把未走访的点中具有最小距离值的点作为下一个当前点C, 转
N=length(W(:,1));%顶点数
W(find(W==0))=inf;
L=Inf*ones(1,N);
L(S)=0;%L赋初值,在S点为0,其它点为Inf
C=S; %当前点为始点S
Q=1:N;% 未走访的顶点集
Z=S*ones(1,N);
Z(S)=0;% Z赋初值,因始点 S 无父亲点,故把 S 点的Z值改为0
for K=1:N % 更新 L 和 Z 的循环
Q=setdiff(Q,C); %Matlab自带函数,显示Q中除了C之外的点集,即当前点 C 未走访的点集
[L(Q),ind]=min([L(Q);L(C)+W(C,Q)]);%当前点C已走访了所有的相邻的未走访的点,找出与C相邻的距离最短的点,记录最短距离和结点的索引值,更新 L
%如果L(Q)
Z(Q(find(ind==2)))=C; %更新Z, 找出Q中索引值为2的结点,将其父亲结点更新为C,至此可以确定C已是走访过的点了
if T&C==T %若 C 点是终点 T, 不用再计算到其它未走访的点的最短路径.先判断C==T,再判断&
L=L(T); %最短路径长度;
road=T;%最短路径终点;
while T~=S%追溯最短路径上的点
T=Z(T); %从终点往前寻找其父亲结点
road=[road,T]; %从终点开始倒序记录最短路径上的结点
end
Z=road(length(road):-1:1); %颠倒次序;
return;
end;
[null, mC]=min(L(Q));
if null==Inf
% disp('到值是Inf的点的路不通!');
Z(find(L==Inf))=nan; %NaN或者nan都是“非数”的意思,“0/0”、“∞/∞”、“0*∞”都会产生这种结果
return;
else
C=Q(mC);% 把未走访的点集Q中与始点距离最近的点作为新的当前点C;
end
end
end
‘玖’ matlab 通过网格法计算不规则图形面积
你先把图像转化为2值的 im2bw 有坦克的地方值为0,没有的地方值为255
假设是N*N的图像,分成K格
然后看就有k*k个小矩阵,用sum来求这些小矩阵的和,可以知道多少点值为255,然后就可以看是不是有超过一半的点包含坦克
‘拾’ 怎样在matlab图形中添加网格
在matlab图形中添加网格方法
1、打开MATLAB的plot函数的一个图形。