私は構造化されたグリッドを扱っています。各ノードのインデックスを示す (m,n) 型のテキストをプロットに追加したいだけです。そして将来的には、代わりに変数の値になるかもしれません。テキスト機能を使っています。コードのプロファイリングを行ったところ、ほとんどの時間がその関数に費やされました。これは 101*101 グリッドのみです。これを増やすと、コードは基本的に動かなくなります。text と 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')