>

사람들이 == 를 타는 것을 본다 ~= > <  괄호 안의 다른 차원을 가진 행렬 사이에 행렬을 입력하여 다음과 같이 항목을 가져옵니다.

b =
     1     4     7
     2     5     8
     3     6     9
>> b == [1 2 3]
ans =
  3×3 logical array
   1   0   0
   0   0   0
   0   0   0
>> b == [1 4 7]
ans =
  3×3 logical array
   1   1   1
   0   0   0
   0   0   0
>> b == [1 4 5]
ans =
  3×3 logical array
   1   1   0
   0   0   0
   0   0   0
>> b == [1 5 4]
ans =
  3×3 logical array
   1   0   0
   0   1   0
   0   0   0
>> a
a =
     1     2     3     4     5     6     7     8     9    10
     1     2     3     4     5     6     7     8     9    10
     1     2     3     4     5     6     7     8     9    10
>> a(:, b == [1 4 5])
ans =
     1     4
     1     4
     1     4
>> a(:, b == [1 5 4])
ans =
     1     5
     1     5
     1     5
>> b
b =
     1     4     7
     2     5     8
     3     6     9
>> b > [1 3 2]
ans =
  3×3 logical array
   0   1   1
   1   1   1
   1   1   1

그러나 나는 이것이 왜 효과가 있을지 전혀 모른다. 이 사용법에 대한 설명이 있습니까? (내 영어는 질문을 더 잘 설명하기에 좋지 않습니다. 누구나 이해하기 쉽게이 질문을 편집 할 수 있기를 바랍니다. 미리 감사드립니다!)


  • 답변 # 1

    R2016b부터 MATLAB은 암시 적 확장을 사용합니다. 이는 입력의 싱글 톤 치수 (크기 1의 치수)가 다른 입력과 동일한 크기로 반복됨을 의미합니다.

    예 :

    b = [1  4  7 
         2  5  8 
         3  6  9]
    %% Singleton dimension as rows
    b == [x y z]
    % is equivalent to
    b == repmat([x y z], size(b,1), 1)
    % is equivalent to
    b == [x  y  z  
          x  y  z 
          x  y  z]
    %% Singleton dimension as columns  
    b == [x; y; z]
    % is equivalent to
    b == repmat([x; y; z], 1, size(b,2))
    % is equivalent to
    b == [x  x  x
          y  y  y
          z  z  z]
    
    

    예제 3 개 모두는 "단일 행을 행으로 한 차원"의 경우입니다. 비교 행 벡터를 반복하고 b 의 각 행과 비교합니다 . 출력이 예상대로임을 쉽게 알 수 있습니다.

    <시간>

    bsxfun 를 사용하여 모든 버전의 MATLAB (R2016b 이전 포함)에서 암시 적 확장을 사용할 수 있습니다. . 이렇게 보일 것입니다 :

    % Since 2016b
    b == [1 2 3];
    % All versions (@eq is the '==' equals function)
    bsxfun(@eq, b, [1 2 3])
    
    

관련 자료

  • 이전 연도 및 주가 포함 된 MS 액세스 필드
  • 다음 pointers - C에서 문자열 배열 편집