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函數的一個圖形。