Matlab调用Python深度强化学习代码

因为一些不得已的原因,现在需要在matlab中调用Python深度强化学习的代码,Matlab向Python的传递状态信息和奖励,训练Python当中的神经网络,再传动作给matlab。目前我也基本了解MATLAB调用Python函数的基本流程,我想请问一下,这样多次调用训练是可行的吗?Matlab调用Python函数,可以对Python代码打断点进行调试吗?谢谢大家。

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7550939
  • 这篇博客你也可以参考下:python读取matlab写的mat文件问题以及解决办法
  • 您还可以看一下 苏金明老师的MATLAB与Python接口课程中的 MATLAB调用自定义Python模块小节, 巩固相关知识点
  • 除此之外, 这篇博客: Python移植MATLAB的巴特沃斯滤波器,椭圆滤波器中的 Python 椭圆滤波器  部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    import numpy as np
    from scipy import signal
    import matplotlib.pyplot as plt
    
    fp = 3500
    fs = 5500
    Rp = 2.5
    Rs = 25
    
    N, fn = signal.ellipord(fp, fs, Rp, Rs, True)
    Wn = 2 * np.pi * fn
    b, a = signal.ellip(N, Rp, Rs, Wn, 'low', True, 'ba')
    
    f = [0 for i in range(101)]
    s = [0 for i in range(101)]
    for x in range(101):
        f[x] = 100*x
        s[x] = 1j*2*np.pi*f[x]
    Hs = np.polyval(b, s) / np.polyval(a, s)
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
    plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
    plt.figure(1)
    plt.subplot(211)
    plt.title('滤波器阶数和截止频率:')
    plt.plot(f, 20 * np.log10(abs(Hs)))
    plt.axis([0, 10000, -40, 1])
    plt.xlabel("频率Hz")
    plt.ylabel("幅度dB")
    plt.subplot(212)
    plt.plot(f, np.angle(Hs))
    plt.xlabel("频率Hz")
    plt.ylabel("相角rad")
    plt.axis([0, 10000, -4, 4])
    plt.show()
    

    该文章对巴特沃斯滤波器与椭圆滤波器的原理并没有深入研究,只是进行了简单的移植。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用 皆我百晓生 小程序回复内容作答:
是的,你可以在MATLAB中调用Python深度强化学习的代码。你可以通过使用MATLAB的Python引擎来实现这一点。

MATLAB的Python引擎允许你在MATLAB中调用Python函数和模块,传递参数并获取返回值。你可以使用MATLAB的py函数将Python代码或函数导入到MATLAB工作空间中。

对于多次调用训练,你可以在MATLAB中使用循环来多次调用Python函数。你可以根据你的需求设置循环次数或其他终止条件。

关于调试Python代码,一种方法是在MATLAB中调用Python函数之前将其先作为独立的脚本运行并进行调试。当你确保Python代码可靠运行后,再将其导入到MATLAB中。在MATLAB中调用Python时,你可以在MATLAB代码中设置断点,以便在调用Python函数时进行断点调试。

希望这些信息能对你有所帮助!