吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 977|回复: 6

[源码] pyton KSVD算法实现【AI】【分享】

[复制链接]
宇郑 发表于 2023-7-24 16:11 | 显示全部楼层 |阅读模式

# pyton KSVD算法实现

import numpy as np


def ksvd(Y, D, K, S, T):
    """
    :param Y: 观测信号
    :param D: 字典
    :param K: 稀疏度
    :param S: 迭代次数
    :param T: 迭代阈值
    :return: 稀疏系数
    """
    # 初始化稀疏系数
    X = np.zeros((D.shape[1], Y.shape[1]))
    # 初始化误差
    E = Y
    # 初始化字典
    D = D / np.linalg.norm(D, axis=0)
    for i in range(S):
        # 更新稀疏系数
        for j in range(Y.shape[1]):
            # 提取非零元素的下标
            pos = np.nonzero(X[:, j])[0]
            # 提取对应的字典
            Dj = D[:, pos]
            # 更新稀疏系数
            X[pos, j] = np.linalg.pinv(Dj).dot(Y[:, j] - D.dot(X[:, j]) + Dj.dot(X[pos, j]))
        # 更新字典
        for k in range(D.shape[1]):
            # 提取非零元素的下标
            pos = np.nonzero(X[k, :])[0]
            # 判断非零元素是否大于0
            if len(pos) > 0:
                # 提取对应的稀疏系数
                Xk = X[k, pos]
                # 更新字典
                D[:, k] = (Y[:, pos] - D.dot(X[:, pos]) + D[:, k].dot(Xk)).dot(Xk) / np.linalg.norm(
                    Y[:, pos] - D.dot(X[:, pos]) + D[:, k].dot(Xk))
                # 更新误差
                E[:, pos] = Y[:, pos] - D.dot(X[:, pos])
        # 判断误差是否小于阈值
        if np.linalg.norm(E) < T:
            break
    return X


if __name__ == '__main__':
    # 生成字典
    D = np.random.randn(64, 256)
    # 生成稀疏系数
    X = np.zeros((D.shape[1], 1))
    X[0:10, 0] = np.random.randn(10)
    X[10:20, 0] = np.random.randn(10)
    X[20:30, 0] = np.random.randn(10)
    X[30:40, 0] = np.random.randn(10)
    X[40:50, 0] = np.random.randn(10)
    X[50:60, 0] = np.random.randn(10)
    X[60:70, 0] = np.random.randn(10)
    X[70:80, 0] = np.random.randn(10)
    X[80:90, 0] = np.random.randn(10)
    X[90:100, 0] = np.random.randn(10)
    # 生成观测信号
    Y = D.dot(X)
    # 调用KSVD算法
    X_ = ksvd(Y, D, 10, 100, 1e-6)
    print(X_)



评分

参与人数 7HB +8 THX +4 收起 理由
longge188 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 2
隔壁老樊 + 1
aa952209617 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
美好映像 + 2 + 1
sjtkxy + 1 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sjtkxy 发表于 2023-7-25 05:08 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Hao浩宇 发表于 2023-7-25 10:31 | 显示全部楼层

大佬能补发一下那个AS么 请你喝水
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 宇郑 发表于 2023-7-25 11:15 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
独鹤 发表于 2023-8-12 09:28 | 显示全部楼层

谢谢分享!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
longge188 发表于 2023-9-24 14:52 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小白哎 发表于 2023-12-28 20:14 | 显示全部楼层

谢谢谢呱呱呱打打打顶顶顶顶
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表