1

私は2つの行列を持っています:

 T3(:,:,1) =

 0     0     0     0     1     0     0     0     0
 0     0     0     0     2     0     0     0     0
 0     0     0     0     3     0     0     0     0
 0     1     0     1     4     2     0     4     0
 0     3     0     2     6     3     0     5     0
 2     4     2     5     7     5     4     6     5
 4     5     5     7     8     8     5     7     6
 5     6     6     8     9     9     8     9     8

 T3(:,:,2) =

 2     1     1     1     1     1     1     1     1
 3     3     2     2     2     2     2     2     2
 4     4     4     3     3     3     3     3     3
 5     5     5     5     4     4     4     4     4
 6     6     6     6     6     5     5     5     5
 7     7     7     7     7     7     6     6     6
 8     8     8     8     8     8     8     7     7
 9     9     9     9     9     9     9     9     8

T3(:,:,1) に存在する値を T3(:,:,2) でゼロにするにはどうすればよいですか?

たとえば、T3(:,:,1) の最初の列の値は 2、4、5 です。T3(:,:,2) の最初の列に値 2,4,5 をゼロにしたいと思います。

 T3(:,:,2) =

 0     0     1     0     0     1     1     1     1
 3     0     0     0     0     0     2     2     2
 0     0     4     3     0     0     3     3     3
 0     0     0     0     0     4     0     0     4
 6     0     0     6     0     0     0     0     0
 7     7     7     0     0     7     6     0     0
 8     8     8     0     0     0     0     0     7
 9     9     9     9     0     0     9     0     0

setdiff または unique を使用してこれを行う方法があるのだろうか。

for y=1:H-1
     for z=1:H-1
         for h=1:H
             for d=1:D-1
                 if T3(y,h,d+1) == T3(z,h,d)
                    T3(y,h,d+1)=0;
                 end
             end
         end
     end
end

H=列数(9)、D=次元数(2)のループとして実行できます。もっと良い方法があるはずです:)?

どうもありがとう。

4

0 に答える 0