1

ここにいくつかの行列があります:

A = [ 1 2 3 4 0 0 0;
      0 0 1 2 3 4 0]
B = [ 0 1 2 3 4 0 0;
      0 0 0 1 2 3 4]
C = [ 1 2 3 4 0 0 0;
      0 1 2 3 4 0 0]

上記の行列を「初期行列」と呼びます。それから私はここに「マトリックスD」を持っています:

D = [ 1 2 3 4 0 0 0;
      1 2 3 4 0 0 0]

ここで、マトリックスDの各行の値「1」がいくつあるかを特定する必要があります。これは、次の例のように再配置されたマトリックスA、B、Cの各行の値「3」と同じ列ではありません。

1 2 3 4 0 0 0
0 0 1 2 3 4 0
    0 1 2 3 4 0 0 
    0 0 0 1 2 3 4
        1 2 3 4 0 0 0
        0 1 2 3 4 0 0 

            1 2 3 4 0 0 0
            1 2 3 4 0 0 0

行列Dの1行目と2行目の値1は同じ列であり、値1の値が3より大きい同じ列の値の1つであるため(4)、私の答えが0であることを望みます。

その人のように答えを出すためのコードは何ですか?助けてください、前に感謝します。

4

1 に答える 1

0

簡単な解決策から始めましょう。これが意図した動作であるかどうかを確認してください。

まず、あなたが示したように、行列A、B、C、Dを配置します。

A = [ 1 2 3 4 0 0 0;
      0 0 1 2 3 4 0];
B = [ 0 1 2 3 4 0 0;
      0 0 0 1 2 3 4];
C = [ 1 2 3 4 0 0 0;
      0 1 2 3 4 0 0];
D = [ 1 2 3 4 0 0 0;
      1 2 3 4 0 0 0];

X = zeros(8,13);
X(1:2,1:7) = A;
X(3:4,3:9) = B;
X(5:6,5:11) = C;
X(7:8,7:13) = D;

それは私たちに与えます:

X =
     1     2     3     4     0     0     0     0     0     0     0     0     0
     0     0     1     2     3     4     0     0     0     0     0     0     0
     0     0     0     1     2     3     4     0     0     0     0     0     0
     0     0     0     0     0     1     2     3     4     0     0     0     0
     0     0     0     0     1     2     3     4     0     0     0     0     0
     0     0     0     0     0     1     2     3     4     0     0     0     0
     0     0     0     0     0     0     1     2     3     4     0     0     0
     0     0     0     0     0     0     1     2     3     4     0     0     0

これで、前の質問の回答を再利用してカウントを行うことができます。

numPerRow = sum(X(7:8,all(X(1:6,:)<4))==1,2)
num = sum(numPerRow)

行列の両方の行がDゼロになるため、合計もゼロになります。

numPerRow =
     0
     0

num =
     0
于 2012-07-29T21:38:09.873 に答える