本周文件交换选择

我们最好的用户反馈

Py_Addpath

肖恩他本周的选择是py_addpath目录matlab_too通过Eric字段

使用Python和MATLAB

你是否有一些来自同事的Python代码或来自GitHub的代码片段,你想在MATLAB中使用,而不必重写?你可以通过Python接口MATLAB。

一个简单的“hello world”的例子如下:

S = py.str(“hello world”将MATLAB字符串转换为py.str年代Sc =字符串(大写)将大写str转换回MATLAB字符串
s = Python str,没有属性。hello world名称大小字节类属性s 1x11 8 py。str sc = "Hello world"

现在,如果您想调用自定义Python代码,该怎么办?Python解释器当前工作目录是当前MATLAB目录:

CWD = py.os.getcwd
cwd = Python str,没有属性。MATLAB文件C: \ \ \ potw \ PyAddPath

如果代码在这里,就万事俱备了。然而,你可能(很可能!)在其他地方有你的Python代码。这就是本周提交的内容。你可以使用py_addpath将另一个目录添加到Python解释器的路径。还可以选择将该目录添加到MATLAB路径中。

就我个人而言,我不再自己修改MATLAB路径并使用(并推荐!)项目对于任何需要配置路径或其他设置的地方。因为项目为我们提供了“在启动时运行”选项,我可以让它运行MATLAB代码,它可以使用Eric的Python路径py_addpath

让我们看一个例子。注意:我们在这里用Python所做的一切也可以用MATLAB来完成webread但我们会假装我们必须使用这个Python函数。

下面是Python函数:

例如:getPriceData('ETH', '2018-03-16T17:41:26Z', '2018-03-16T18:14:46Z')从Python调用:>>import dataLib >>dataLib。getPriceData('ETH', '2018-03-16T17:41:26Z', '2018-03-16T18:14:46Z')""" def getPriceData(产品,开始,停止):导入urllib。请求导入json #所有以美元为单位返回的加密货币产品product = prod下载188bet金宝搏uct + '-USD' #粒度以秒为单位,因此我们得到的是1分钟条粒度= '60' #返回:[时间,低,高,打开,关闭,音量]url = 'https://api.pro.coinbase.com/products/' + product + '/蜡烛?start=' + start + '&end=' + stop + '&granularity=' + granularity #执行对网站urlRequest = urllib.request的调用。Request(url, data=None, headers={'User-Agent': 'Mozilla/5.0 (Macintosh;Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML,像Gecko) Chrome/35.0.1916.47 Safari/537.36'}) response = urllib.request.urlopen(urlRequest) html = response.read() # python 3。x需要解码的字节字符串jsonData = json.loads (html.decode())返回jsonData  ########################################################################################### def parseJson (json_data):from array import array #返回时间和关闭数据日期= [row[0] for row in json_data] data = [row[4] for row in json_data] #转换为1D数组dateArray = array('d') dataArray = array('d') dateArray.fromlist(dates) dateArray.fromlist(data) #将两个时间序列都包装到一个字典closeTimeSeries = {'Date': dateArray, ' close ': dataArray}返回closeTimeSeries

这里是我要添加到项目启动的函数,用于在项目启动时添加Python文件夹。

函数addPythonDataLib() prj = currentProject;py_addpath (fullfile(撮合下。RootFolder,“巨蟒”));结束

现在在打开项目之后,我们可以使用dataLib.py功能。

查询以太坊价格startDate可以=2018 - 03 - 16 t12:00:00z;stopDate =2018 - 03 - 16 t17:00:00z;jsonData = py.dataLib.getPriceData(“乙”, startDate, stopDate);data = py.dataLib.parseJson(jsonData);%转换为MATLAB数据类型数据= struct(数据);数据。Date = double(data.Date)';数据。Date = datetime(数据。目前为止,“ConvertFrom”“posixtime”“时区”“美国/ New_York”);数据。Close = double(data.Close)';数据= table2时间表(struct2table(数据));disp(头(数据))stackedplot(数据);
日期关闭____________________ ______ 16-Mar-2018 13:00:00 621.1 16-Mar-2018 12:59:00 621.1 16-Mar-2018 12:58:00 621.09 16-Mar-2018 12:56:00 621.09 16-Mar-2018 12:55:00 621.09 16-Mar-2018 12:54:00 621.06 16-Mar-2018 12:53:00 621.87

给Eric的一个建议是,该函数可以使用convertStringsToChars允许MATLAB字符串输入也可以传入,而不需要改变任何算法部分。即。

目录= convertStringsToChars(目录);

评论

试一试,让我们知道你的想法在这里或者留下评论埃里克。

由MATLAB®R2019b发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。