隨機遊走類似布朗運動,就是隨機的向各個方向走吧。
雖然程式碼沒什麼技術含量,不過產生的影象實在太漂亮了,所以還是貼上來吧。
產生的影象:
matlab程式碼如下:
clear all;close all;clc n=70000; %遊走的步數。也是影象中畫素個數,有些位置可能重複,所以白畫素小於等於n x=0; %初始x座標 y=0; %初始y座標 pix=zeros(n,2); %遊走產生的畫素座標 neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1]; %當前畫素鄰域 for i=1:n r=floor(1+8*rand()); %八鄰域隨機選一個來走 y=y+neighbour(r,1); %y方向遊走 x=x+neighbour(r,2); %x方向遊走 pix(i,:)=[y x]; %儲存座標 end miny=min(pix(:,1)); %影象座標不可能為負,所以找最小值再整體提升為正 minx=min(pix(:,2)); %同上 pix(:,1)=pix(:,1)-miny+1; %畫素座標整體變為正 pix(:,2)=pix(:,2)-minx+1; maxy=max(pix(:,1)); %找最大座標值,為開闢影象做準備 maxx=max(pix(:,2)); img=zeros(maxy,maxx); %根據maxy、maxx產生影象 for i=1:n %將遊走的值賦給影象 img(pix(i,1),pix(i,2))=1; end imshow(img)