用python构建门电路
import cv2
import numpy as np
import matplotlib.pyplot as plt
#构建与门:输入都为1时,输出为1,其余输出0
def AND(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.7
tmp = np.sum(x*w)+b
if tmp <= 0:
return 0
elif tmp >0:
return 1
#构建或门:输入有1时,输出为1,都输入都为0时,输出0
def OR(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.2
tmp = np.sum(x*w)+b
if tmp <= 0:
return 0
elif tmp >0:
return 1
#构建与非门:输入都为1时输出为0,其余输出全为1
def NAND(x1,x2):
x = np.array([x1,x2])
w = np.array([-0.5,-0.5])
b = 0.7
tmp = np.sum(x*w)+b
if tmp <= 0:
return 0
elif tmp >0:
return 1
#构建异或门:输入相同时,输出为0。输入不同时,输出为1
def XOR(x1,x2):
s1 = NAND(x1,x2) #与非门
s2 = OR(x1,x2) #非门
y = AND(s1,s2) #与门
return y