1

私は三角形分割プログラムを使用しており、データ ポイントとその三角形分割 (別のプログラムから取得) をプロットする必要があります。したがって、delauany エッジ マトリックスnewgrid1_eDT (エッジ リストの場合は e) を (最初の列は行番号) として持っています。

1         0 0   9
2         0 1   9
3         0 1   9
4         0 1   8
5         0 1   8
         [...]
11716     5 6   8
11717     1 2   4
11718     0 2   4

アイデアは、この newgrid1_ASCIIeDT のようにすることです:

1         0 0   9
2         0 1   9
3
4         0 1   9
5         0 1   8
6
7         0 1   8
         [...]
11715     5 6   8
11716
11717     1 2   4
11718     0 2   4

基本的に、各 2 行は 3 次元座標のペアを表します (そして、点の各ペアは線を表します)。

newgrid1_ eDTから 2 つの行 (インデックス i) を連続してコピーし、その後空白行をnewgrid1 _ASCIIeDT (インデックス j) にコピーして、空行列newgrid1_ ASCIIeDTを徐々に埋めようとして、次のように記述しました。受信行列newgrid1 _ASCIIeDTに 11718+ 11718/3 =15624 行を割り当てましたnewgrid1__eDTから転送したポイントごとに 1つと、2 行ごとに 1 つの空の mrow (行 3、6、9、... など):

newgrid1__ASCIIeDT=zeros(15624,3);
[m,l]=size(newgrid1__ASCIIeDT) ;
j=0;
i=1;
for  j = 1:3:15624
i   
newgrid1__ASCIIeDT(j,:)=newgrid1__eDT(i,:);
newgrid1__ASCIIeDT(j+1,:)=newgrid1__eDT(i+1,:);
newgrid1__ASCIIeDT(j+2,:)=blank;
i=i+1
end

何らかの理由で、これでうまくいくはずだと確信していますが、どういうわけか奇妙な結果が得られます。これを行う他の(より簡単な方法)はありますか、それとも車輪を再発明していますか?

理想的には、これを C (他のすべての処理が行われている場所) で記述したはずですが、現時点では簡単な修正が必要であり、11,000 行を移動して空白行を導入することはできません。何か助けてください?

4

1 に答える 1

0

簡単な答えはi = i+2;

しかし、本当に、私はあなたがすべきだと思います

newgrid1__ASCIIeDT(1:3:end,:)=newgrid1__eDT(1:2:end,:);
newgrid1__ASCIIeDT(2:3:end,:)=newgrid1__eDT(2:2:end,:);

これが機能newgrid1__ASCIIeDTするには、適切なサイズに初期化する必要があります。の 2 行ごとに 3 行あることに注意してくださいnewgrid1__EDT

于 2012-12-05T00:31:29.767 に答える