用python实现一个x在3附近或者y在4附近的二维隶属度函数
时间: 2024-06-06 20:11:40 浏览: 15
这里给出一个简单的实现,使用了numpy库来进行多维数组计算:
```python
import numpy as np
def membership_func(x, y):
# 计算x在3附近的隶属度
x_membership = np.exp(-(x-3)**2 / 2)
# 计算y在4附近的隶属度
y_membership = np.exp(-(y-4)**2 / 2)
# 取两个隶属度的最小值作为最终隶属度
membership = np.minimum(x_membership, y_membership)
return membership
```
这个函数接受两个参数x和y,分别计算它们在3和4附近的隶属度,然后取两者的最小值作为最终的隶属度。其中,隶属度的计算使用了高斯函数,通过调整高斯函数的方差可以控制隶属度函数的陡峭程度。这个函数返回一个二维数组,表示每个坐标点的隶属度。例如:
```python
>>> x = np.arange(0, 6, 0.5)
>>> y = np.arange(0, 6, 0.5)
>>> X, Y = np.meshgrid(x, y)
>>> Z = membership_func(X, Y)
>>> print(Z)
[[1.92874985e-05 2.42694773e-04 2.32011692e-03 1.32435934e-02
4.97870684e-02 1.23409804e-01 2.00000000e-01 1.23409804e-01
4.97870684e-02 1.32435934e-02 2.32011692e-03 2.42694773e-04]
[2.42694773e-04 3.05882369e-03 2.92470708e-02 1.67017008e-01
6.30342611e-01 1.56387397e+00 2.53409583e+00 1.56387397e+00
6.30342611e-01 1.67017008e-01 2.92470708e-02 3.05882369e-03]
[2.32011692e-03 2.92470708e-02 2.79384380e-01 1.59745636e+00
6.02714189e+00 1.49384450e+01 2.42205715e+01 1.49384450e+01
6.02714189e+00 1.59745636e+00 2.79384380e-01 2.92470708e-02]
[1.32435934e-02 1.67017008e-01 1.59745636e+00 9.14672865e+00
3.44739212e+01 8.53259958e+01 1.38389653e+02 8.53259958e+01
3.44739212e+01 9.14672865e+00 1.59745636e+00 1.67017008e-01]
[4.97870684e-02 6.30342611e-01 6.02714189e+00 3.44739212e+01
1.29896120e+02 3.21337884e+02 5.20994195e+02 3.21337884e+02
1.29896120e+02 3.44739212e+01 6.02714189e+00 6.30342611e-01]
[1.23409804e-01 1.56387397e+00 1.49384450e+01 8.53259958e+01
3.21337884e+02 7.94595947e+02 1.28802975e+03 7.94595947e+02
3.21337884e+02 8.53259958e+01 1.49384450e+01 1.56387397e+00]
[2.00000000e-01 2.53409583e+00 2.42205715e+01 1.38389653e+02
5.20994195e+02 1.28802975e+03 2.08546957e+03 1.28802975e+03
5.20994195e+02 1.38389653e+02 2.42205715e+01 2.53409583e+00]
[1.23409804e-01 1.56387397e+00 1.49384450e+01 8.53259958e+01
3.21337884e+02 7.94595947e+02 1.28802975e+03 7.94595947e+02
3.21337884e+02 8.53259958e+01 1.49384450e+01 1.56387397e+00]
[4.97870684e-02 6.30342611e-01 6.02714189e+00 3.44739212e+01
1.29896120e+02 3.21337884e+02 5.20994195e+02 3.21337884e+02
1.29896120e+02 3.44739212e+01 6.02714189e+00 6.30342611e-01]
[1.32435934e-02 1.67017008e-01 1.59745636e+00 9.14672865e+00
3.44739212e+01 8.53259958e+01 1.38389653e+02 8.53259958e+01
3.44739212e+01 9.14672865e+00 1.59745636e+00 1.67017008e-01]
[2.32011692e-03 2.92470708e-02 2.79384380e-01 1.59745636e+00
6.02714189e+00 1.49384450e+01 2.42205715e+01 1.49384450e+01
6.02714189e+00 1.59745636e+00 2.79384380e-01 2.92470708e-02]
[2.42694773e-04 3.05882369e-03 2.92470708e-02 1.67017008e-01
6.30342611e-01 1.56387397e+00 2.53409583e+00 1.56387397e+00
6.30342611e-01 1.67017008e-01 2.92470708e-02 3.05882369e-03]]
```
可以使用matplotlib库将隶属度函数可视化:
```python
import matplotlib.pyplot as plt
plt.imshow(Z, origin='lower', extent=[0, 6, 0, 6])
plt.colorbar()
plt.show()
```
得到的隶属度函数图像如下:
![membership_func](https://i.loli.net/2021/12/04/ZY6iKPxNSm4L1Dk.png)
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)