Received Filed (RF) 计算

22 篇文章 1 订阅
import numpy as np
### 不补全卷积运算
""" 实现 5*5的w矩阵 与 核为3*3的矩阵ker卷积 得到3*3的矩阵的过程
一共生成3*3的计算矩阵 (5-3+1)*(5-3+1)= 3*3 = 9个
每个3*3 的矩阵一共9个元素,最终形成9*9的矩阵来存储要计算的矩阵
"""
"""
k_r : 卷积核的长
k_1 : 卷积核的宽
w_r : 原始矩阵的长
w_l : 原始矩阵的宽
"""
## 得到要计算的矩阵
def pro_M(k_r,k_1,w_r,w_l):
    temp = []
    for n in range(k_r):
        for i in range(n,n+k_r):
            for m in range(k_1):
                for j in range(m,m+k_1):
                    if(i>=0 and i<= w_r and j>=0 and j<= w_l):
                     temp.append(w[i][j])
    # print('temp:', temp)
    # print(type(temp))
    # print(np.shape(temp))
    w_int = np.array(temp).reshape((9,9))
    # print(w_int)
    return w_int

## 卷积计算
def conv(w_int,ker):
    L = []
    w2 = np.zeros([3,3])
    for i in range(3):
        n = 3
        for j in range(n):
           w2 = w_int[i*3:(i+1)*3, j*3:(j+1)*3]
           # print(w2)
           L.append(np.sum(w2 * ker))
    pot = np.array(L)
    pot = pot.reshape((3, 3))
    # print(L)
    # print(type(L))
    # pot = np.array(L)
    # print(type(pot))
    # print(pot.reshape((3,3)))
    return pot

if __name__ == '__main__':
    w = np.round(np.random.random([5, 5]))  # 原始矩阵
    ker = np.ones([3, 3])  # 卷积的核函数
    pot = np.zeros([5, 5])  # 得到的目标矩阵

    w_int = np.zeros([9, 9]) # 存储计算的矩阵
    k_row = ker.shape[0]  # 取出行
    k_col = ker.shape[1]  # 取出列
    w_row = w.shape[0]  # 取出行
    w_col = w.shape[1]  # 取出行

    w_i =  pro_M(k_row,k_col,w_row, w_col)
    pot = conv(w_i, ker)
    print(pot)

其中一种结果

[[7. 6. 6.]
 [6. 5. 5.]
 [6. 6. 4.]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值