我是Python
的新手,我必须对现有项目进行一些更改。我正在将Matlab
二进制数据文件中的数据导入我的Python
脚本。
假设原始*.m
文件包含以下内容:
> Temperature=61.3
>
> VibrationSamples=[76,75,76,77, ... a lot of samples, 78]
>
> save(filename.mat, 'Temperature', 'VibrationSamples', '-mat7-binary')
(这是我能提供的最小例子)
我使用
将结果*.mat
导入到python脚本中
> mat = scipy.io.loadmat(filename.mat)
之后我可以使用
从我的matlab结构中访问元素> variableA = mat('temperature')
> variableB = mat('vibrationSamples')
但是我对结果感到困惑。如果我尝试打印varialbeA,对于给定的示例,它将提供二维数组。 print variableA
的输出为[[61.3]]
。在*.m
文件中,它显然是float
。
为什么会这样。什么是解决它的干净方法?我知道我可以使用
> variableA = mat('temperature')[0][0]
但这看起来不合适。
我做错了吗?
答案 0 :(得分:3)
这就是MATLAB存储标量的方式。在MATLAB数据模型中,标量表示为1乘1的数组。
所以在Python中你会得到这样的值:
mat['Temperature'][0,0]
有关此问题的MATLAB方面的更多信息,请访问:http://www.mathworks.co.uk/help/matlab/math/empty-matrices-scalars-and-vectors.html#f1-86433
<强>标量强>
任何单独的实数或复数都在MATLAB中表示为a 1乘1矩阵称为标量值:
A = 5; ndims(A) % Check number of dimensions in A ans = 2 size(A) % Check value of row and column dimensions ans = 1 1
使用isscalar函数判断变量是否包含标量值:
isscalar(A) ans = 1