我正在處理結構化網格。我只想添加一個表示每個節點索引的類型(m,n)的文本。也許在未來,變量的價值取而代之。我使用文本功能。我分析了代碼,大部分時間都花在了這個功能上。它只是一個101 * 101的網格,如果你增加它的代碼基本上是卡住了。我已經優化了它避免文本和spritnf的循環,但它仍然太慢。此外,一旦情節創建,它會非常卡住,每次平移或縮放需要幾秒鐘的時間。請參閱下面的最小示例。我還添加了用於顯示網格的修補程序。 (我使用補丁,因爲我想繪製每個單元格的一些網格數量,並且我希望保持一般情況,以便我移動到具有不規則多邊形的非結構化網格物體,但補丁超快,但沒有概率)。任何建議,以加快這一點?謝謝「文本」功能非常慢,我的代碼瓶頸
%define grid and grid numbering
DX = 10 ; %=DY
mmax = 101; %= number of nodes in x
nmax = mmax %= number of nodes in y
[ x y ] = meshgrid(0:DX:DX*(mmax-1),0:DX:DX*(mmax-1)); %grid
[ mMAT nMAT ] = meshgrid(1:mmax,1:nmax); %grid numbering
%
%display patch
%
cont = 0
for m=2:mmax
for n=2:nmax
cont=cont+1;
Xpatch(1:4,cont) = [ x(n-1,m-1) ; x(n-1,m) ; x(n,m) ; x(n,m-1) ] ;% ii+1 since it has the BC
Ypatch(1:4,cont) = [ y(n-1,m-1) ; y(n-1,m) ; y(n,m) ; y(n,m-1) ] ;
Zpatch(cont) = 1;
end
end
hpatch3 = patch(Xpatch(:,:),Ypatch(:,:),Zpatch(:)');
%
% display node indices
%
charINPUT = regexp(sprintf('(%d,%d)\n',mMAT(:),nMAT(:)),'(?<=\s*)(\S*)(?=\n)','match'); % use regexp to vectorize sprintf and so avoid slow loops with sprintf
text(x(:),y(:),charINPUT(:),'Clipping', 'on');
set(gcf,'position',[9 40 1350 650])
set(gcf,'PaperPositionMode','auto')
只是一個想法,提供文字寫作的另一個功能是註釋。雖然它留下這個填充的註釋更重,但可以檢查它是否更好。但我不會認爲有比'text'更好的方法,它是matlab內置的解決方案。 – Werner
看看這裏:http://stackoverflow.com/questions/4940561/does-matlab-execute-a-callback-when-a-plot-is-zoomed-resized-redrawn 順便說一下,你的編輯我的對你的另一個問題的回答是過分熱心的,因此評論者感謝地拒絕了它。儘量不要從根本上改變帖子的內容......只需稍作修改即可。讓我知道是否有數字或特定的東西添加,我會做出改變。謝謝。 – chappjc
嗯,我檢查了幫助註釋不允許你使用一個載體,你必須循環正確嗎?我懷疑它的更快 – Lupocci