• 使用svd对信号矩阵降噪


    本文涉及的相关知识点如下:

    1.使用python读取mat文件

    2.python对字典dict,ndarray进行操作。

    3.使用svd对矩阵进行降噪

    4.比较两个矩阵的误差,计算均方误差值

    正文:

    1.使用python读取mat文件

    参考文献:https://blog.csdn.net/rumswell/article/details/8545087

    核心代码只有一句:scipy.io.loadmat()

    import scipy.io as sio
    data=sio.loadmat(“.mat文件路径”)
    print(data)

    加载之后根据data的类型内容进行操作,通常三维是字典,二维是ndarray

    2.python对字典dict,ndarray进行操作。

    ①ndarray详见https://www.runoob.com/numpy/numpy-ndarray-object.html

    此处列出几个ndarray的常用属性

    属性含义
    T 转置,与self.transpose( )相同,如果维度小于2返回self
    size 数组中元素个数
    itemsize 数组中单个元素的字节长度
    dtype 数组元素的数据类型对象
    ndim 数组的维度
    shape 数组的形状
    data 指向存放数组数据的python buffer对象
    flat 返回数组的一维迭代器
    imag 返回数组的虚部
    real 返回数组的实部
    nbytes 数组中所有元素的字节长度

    注意,ndarray的属性直接调用不加括号,如

    print(array.size) #查看数组内元素个数而不是.size()

    ①对dict的操作详见

    https://www.runoob.com/python/python-dictionary.html

    提示两点

    1.字典的常用属性

    len(dict) 计算字典元素个数,即键的总数。

     dict.keys()以列表返回一个字典所有的键

    2.遍历字典的方法

    print(dict['key_Name'])

    3.使用svd对矩阵进行降噪

     参考链接:http://liao.cpython.org/scipy06/#63-svd

    核心代码:

    U,s,Vh = svd(data) #data是想要降噪的矩阵
    A = np.dot(U[:,0:i],np.dot(np.diag(s[0:i]),Vh[0:i,:]))    #取前i个特征值进行降噪

    A就是矩阵data降噪后的矩阵

    4.比较两个矩阵的误差,计算均方误差值

    # 测试集标签预测
    y_predict = lin_reg.predict(X_test)
     
    # 衡量线性回归的MSE 、 RMSE、 MAE、r2
    from math import sqrt
    from sklearn.metrics import mean_absolute_error
    from sklearn.metrics import mean_squared_error
    from sklearn.metrics import r2_score
    print("mean_absolute_error:", mean_absolute_error(y_test, y_predict))
    print("mean_squared_error:", mean_squared_error(y_test, y_predict))
    print("rmse:", sqrt(mean_squared_error(y_test, y_predict)))
    print("r2 score:", r2_score(y_test, y_predict))

     5.获取某个区间的连续均匀的n个数。

    参考链接:https://blog.csdn.net/you_are_my_dream/article/details/53493752

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

    注意想要用在for循环的时候  for循环只能读取字符串的范围或者列表的范围,需要加入一步转化,例如遍历1到100

    for i in np.linspace(10,100,100,dtype=int).tolist():
        print(i)
  • 相关阅读:
    路由
    客户端如何调用
    第一个简单的DEMO
    Web API初印象
    项目开发中经常使用的缓存
    EF的Model First
    如何计算代码的运行性能
    使用Obsolete特性来标记方法过时或弃用
    nodeJs实现文件上传,下载,删除
    node 部署教程二
  • 原文地址:https://www.cnblogs.com/StarZhai/p/14019880.html
Copyright © 2020-2023  润新知