相关疑难解决方法(0)

将Matlab的datenum格式转换为Python

我刚开始从Matlab迁移到Python 2.7,我在阅读我的.mat文件时遇到了一些麻烦.时间信息以Matlab的datenum格式存储.对于那些不熟悉它的人:

序列日期编号表示日历日期,作为自固定基准日期以来经过的天数.在MATLAB中,序列号1是1月1日0000.

MATLAB还使用连续时间来表示从午夜开始的几天的分数; 例如,下午6点等于0.75连续日.所以MATLAB中的字符串'31 -Oct-2003,6:00 PM'是日期号731885.75.

(取自Matlab文档)

我想将其转换为Pythons时间格式,我找到了本教程.简而言之,作者说明了这一点

如果你使用python解析它,datetime.fromordinal(731965.04835648148)那么结果可能看起来合理[...]

(在任何进一步的转换之前),这对我不起作用,因为datetime.fromordinal需要一个整数:

>>> datetime.fromordinal(731965.04835648148) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: integer argument expected, got float
Run Code Online (Sandbox Code Playgroud)

虽然我可以将它们整理成日常数据,但实际上我需要输入精确的时间序列.有没有人有这个问题的解决方案?我想避免重新格式化我的.mat文件,因为它们有很多,我的同事也需要使用它们.

如果它有所帮助,其他人则要求反过来.可悲的是,我对Python太新了,无法真正理解那里发生的事情.

/ edit(2012-11-01):这已在上面发布的教程中修复.

python matlab

14
推荐指数
4
解决办法
2万
查看次数

将.NET数据表传递给MATLAB

我正在为Matlab组件构建一个接口层,该组件用于分析由我正在构建的单独.NET应用程序维护的数据.我正在尝试将.NET数据表序列化为数字数组,以传递给MATLAB组件(作为更通用的序列化例程的一部分).

到目前为止,我已经相当成功地传递了数值数据表,但是在尝试添加数据类型列时我遇到了麻烦DateTime.我到目前为止所做的是将值从填充DataTable到双数组中,因为MATLAB只关心双精度,然后直接转换为a MWNumericArray,它本质上是一个矩阵.

这是当前的代码;

else if (sourceType == typeof(DataTable))
{
    DataTable dtSource = source as DataTable;
    var rowIdentifiers = new string[dtSource.Rows.Count];               
    // I know this looks silly but we need the index of each item
    // in the string array as the actual value in the array as well
    for (int i = 0; i < dtSource.Rows.Count; i++)
    {
        rowIdentifiers[i] = i.ToString();
    }
    // convenience vars
    int rowCount = dtSource.Rows.Count;
    int colCount = dtSource.Columns.Count;
    double[,] …
Run Code Online (Sandbox Code Playgroud)

c# ado.net matlab matlab-deployment

1
推荐指数
1
解决办法
6557
查看次数

标签 统计

matlab ×2

ado.net ×1

c# ×1

matlab-deployment ×1

python ×1