2

MATLABの四角形関数を使用して、256個の小さなサイズの正方形を描画しようとしています。10 個の正方形を描画している場合、次のようにするとうまくいきます。

for i=1:2:40

rectangle('Position',[5,3+i,0.3,0.3],...
      'Curvature',[0,0],...
     'LineStyle','-', 'faceColor', 'black')

end

axis off; 

daspect([1,1,1])

ここに画像の説明を入力

しかし、for ループの最後の値を (256 の正方形を描画するために) 512 に変更すると、正しく印刷されません。

ここに画像の説明を入力

上の画像の一部を拡大したものを次に示します。 ここに画像の説明を入力

この画像は、正方形の辺が完全に等しくなく、正方形のサイズが大きくなるため、どこかが間違っていることを明確に示しています。正方形の数:サイズが減少しない完全な正方形を描くのを手伝ってくれる人はいますか? (メモリに問題はありません。正方形全体をカバーするために複数のページを下にスクロールすることは許容できます)

4

2 に答える 2

5

これは古典的なモアレ効果です。十分なピクセルがないため、モニターにそれほど多くの四角形を表示することはできません。Matlab はダウンサンプリングを行います。したがって、元は存在しなかった別の周波数が得られます。

于 2012-05-16T14:39:33.060 に答える
3

私はあなたのコードを試してみましたが、ループが 512 回の反復を行っても正常に動作します - 最終的な matlab の図を拡大すると。あなたが説明するアーティファクトは、おそらくモニターの解像度または非ベクターファイルへのエクスポート中の低解像度が原因です。

画像をベクター ファイル (eps または svg) としてエクスポートして、拡大したときにすべてが正常に表示されることを確認してください。

于 2012-05-16T12:48:41.163 に答える