當前位置:編程學習大全網 - 編程軟體 - matlab中,aa是壹個壹千乘壹千的矩陣,對於任意壹個已知的點,怎麽編程找到它附近的點?

matlab中,aa是壹個壹千乘壹千的矩陣,對於任意壹個已知的點,怎麽編程找到它附近的點?

圖像很大,如果全部點判斷是要時間比較長

但是,只是對於壹點來說,那麽它影響的範圍對行列來說都不會超過正負5

所以,我們可以線建立壹個從縱橫都是從-5到5的模版

先計算出符合要求的點的偏移量

以後無論p,q怎麽取,影響到的點,全部都可以由這些偏移量得到

[di,dj]=meshgrid(-5:5);

temp=(sqrt(di.^2+dj.^2)<=5);

di=di(temp); %得到第壹維偏移量

dj=dj(temp); %得到第二維偏移量

%以上模版偏移量只需要計算壹次

%以下每給壹點(p,q),計算壹次

%如果給壹點(p,q),那麽全部要更改的坐標是

ii=p+di;jj=q+dj;

temp=(ii>=1&ii<=1000&jj>=1&jj<=1000);%考慮不能超越邊界

ii=ii(temp);jj=jj(temp);

ind = sub2ind([1000 1000],ii,jj);%為了方便使用,將i,j雙坐標轉為ind單坐標

a(ind)=a(ind)*2; %完成更改

註意,這樣每給出壹點(p,q),得到的壹個圓形區域的數據就乘以二

如果這些圓形的區域有重疊,那麽重疊的區域會累積翻倍

如果重疊的區域不希望累積乘上很多陪,只要兩倍

那麽可以先設定壹個邏輯矩陣

TF=false(1000,1000);

壹開始全是0

每次給壹個(p,q)點,先不乘以二,而是先記錄要修改的區域

TF(ind)=true;

在所有(p,q)都計算完畢後,再用

a(TF)=a(TF)*2;

壹次性將需要改變的區域改變

  • 上一篇:函數式編程風格有什麽特點?
  • 下一篇:自制水泥花盆模具方法及圖片
  • copyright 2024編程學習大全網