Main Content

not, ~

Find logical NOT




~A returns a logical array or a table of logical values of the same size as A. The output contains logical 1 (true) values where A is zero and logical 0 (false) values where A is nonzero.

not(A) is an alternate way to execute ~A, but is rarely used. It enables operator overloading for classes.


collapse all

Create a 3-by-3 identity matrix.

A = eye(3)
A = 3×3

     1     0     0
     0     1     0
     0     0     1

Find the logical negation of A. The new matrix has type logical.

B = ~A
B = 3x3 logical array

   0   1   1
   1   0   1
   1   1   0

Execute code based on a condition using the logical not operator in the context of an if loop.

Create a logical variable A.

A = false;

Use A to write an if/else code block. Wrap the if/else block in a for loop so that it executes four times.

for k = 1:4
    if ~A
        disp('IF block')
        A = true;
        disp('ELSE block')
IF block
ELSE block
ELSE block
ELSE block

On the first iteration, A is false, so the if block executes since ~A is true. However, the if block also changes the value of A to true. In the remaining iterations, ~A is false and the else block executes.

Since R2023a

Create a table and perform a logical NOT of it. To perform a logical NOT of a table or timetable, all its variables must have data types that support logical operations.

A = table([0;2],[0;4],VariableNames=["V1","V2"],RowNames=["R1","R2"])
A=2×2 table
          V1    V2
          __    __

    R1    0     0 
    R2    2     4 

ans=2×2 table
           V1       V2  
          _____    _____

    R1    true     true 
    R2    false    false

Input Arguments

collapse all

Input array, specified as a numeric scalar, vector, matrix, multidimensional array, table, or timetable.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | table | timetable
Complex Number Support: Yes


  • You also can use the ~ symbol as a placeholder output argument in a function call. For example, [~,i] = max(A) suppresses the first output of the max function, returning only the indices of the maximum values. For more information, see Ignore Inputs in Function Definitions.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

HDL Code Generation
Generate VHDL, Verilog and SystemVerilog code for FPGA and ASIC designs using HDL Coder™.

Version History

Introduced before R2006a

expand all