【记得交作业】波波离散实验报告五(python实现)

实验名称关系闭包运算

实验目的和要求掌握求关系闭包的方法。

实验内容:编程求一个关系的闭包,要求传递闭包用warshall方法。

实验心得:

1.求传递闭包的代码如下:

def logic(a,b):

    return 0 if a==0 and b==0 else 1

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

    mat.append(input('第{}行'.format(i+1)).split())

for y in range(n):

    for x in range(n):

        if int(mat[x][y])==1:

            for k in range(n):

                mat[x][k]=logic(int(mat[x][k]),int(mat[y][k]))

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

    print()

计算传递闭包结果如下:

 

  1. 求自反闭包的代码如下:
def logic(a,b):

    return 0 if a==0 and b==0 else 1

#输入矩阵

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

    mat.append(input('第{}行'.format(i+1)).split())

#自反闭包

for y in range(n):

    for x in range(n):

        if x==y:

            mat[x][y]=1

#打印矩阵

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

print()

计算自反闭包的结果如下:

 

  1. 计算对称闭包的代码如下:
def logic(a,b):

    return 0 if a==0 and b==0 else 1

#输入矩阵

mat=[]

n=int(input('输入阶数:'))

for i in range(n):

mat.append(input('第{}行'.format(i+1)).split())

#对称闭包

for y in range(n):

    for x in range(n):

        if int(mat[y][x])==1:

            mat[x][y]=1

#打印矩阵

for row in range(n):

    for column in range(n):

        print(mat[row][column], end='  ')

print()

计算对称闭包结果如下:

 代码可能存在借鉴,侵删!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python示例代码,展示了如何使用普通滤波、维纳滤波、卡尔曼滤波和自适应滤波等方法来消除或压制信号中的噪声。 ``` import numpy as np import matplotlib.pyplot as plt from scipy.signal import wiener, medfilt from filterpy.kalman import KalmanFilter from filterpy.common import Q_discrete_white_noise # 生成一个包含噪声的信号 np.random.seed(0) t = np.linspace(0, 1, 100) signal = np.sin(2*np.pi*10*t) + np.random.normal(0, 0.5, 100) # 普通滤波 filtered_signal = medfilt(signal, kernel_size=3) # 维纳滤波 wiener_signal = wiener(signal) # 卡尔曼滤波 kf = KalmanFilter(dim_x=2, dim_z=1) kf.x = np.array([[signal[0]], [0.]]) kf.F = np.array([[1., 1.], [0., 1.]]) kf.H = np.array([[1., 0.]]) kf.P *= 1000. kf.R = 5 kf.Q = Q_discrete_white_noise(dim=2, dt=0.1, var=0.13) kalman_signal = [] for z in signal: kf.predict() kf.update(z) kalman_signal.append(kf.x[0]) # 自适应滤波 alpha = 0.05 adaptive_signal = np.zeros_like(signal) for i in range(1, len(signal)): adaptive_signal[i] = alpha * signal[i] + (1 - alpha) * adaptive_signal[i-1] # 绘制结果 fig, ax = plt.subplots(5, 1, figsize=(10, 10)) ax[0].plot(t, signal) ax[0].set_title('Original Signal') ax[1].plot(t, filtered_signal) ax[1].set_title('Median Filter') ax[2].plot(t, wiener_signal) ax[2].set_title('Wiener Filter') ax[3].plot(t, kalman_signal) ax[3].set_title('Kalman Filter') ax[4].plot(t, adaptive_signal) ax[4].set_title('Adaptive Filter') plt.show() ``` 这个代码使用 `medfilt()` 函数进行中值滤波,使用 `wiener()` 函数进行维纳滤波,使用 `filterpy` 库中的 `KalmanFilter` 类进行卡尔曼滤波,使用一个简单的递归公式进行自适应滤波。你可以根据自己的需选择合适的滤波方法和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值