MATLAB到Python转换,矩阵和列表

时间:2012-06-04 15:11:10

标签: python matlab numpy

如何从Matlab将以下内容翻译成Python?我仍然试图在numpy等中包围列表/矩阵和数组。

outframe(:,[4:4:nout-1]) = 0.25*inframe(:,[1:n-1]) + 0.75*inframe(:,[2:n])
pos=(beamnum>0)*(beamnum<=nbeams)*(binnum>0)*(binnum<=nbins)*((beamnum-1)*nbins+binnum)
for index =1:512:
outarray(index,:) =uint8(interp1([1:n],inarray64(index,:),[1:.25:n],method))

(还有其他的东西,这些只是我不确定如何理解的特定陈述。我有numpy导入,

2 个答案:

答案 0 :(得分:1)

numpy中的主要工具是ndarray(或数组)。在翻译代码时,它将在很大程度上取代matlab矩阵。与matlab矩阵一样,ndarray存储同类数据(即float64),并针对数值运算进行了优化。

numpy矩阵是ndarray的子​​类,可以方便某些线性代数密集型应用程序。 Here是关于两者之间差异的更多信息。

python列表更像是一个matlab单元格数组(尽管不完全相同)。它是基本的python数据结构之一,但在科学应用程序中,我发现它最常出现在你需要保存异构数据的时候。 (或者当你做一些非常简单的事情并且不想去创建一个numpy数组的麻烦时)。

上面的代码几乎可以使用ndarray逐字转换为python,并使用[]替换()进行索引,并考虑索引在MATLAB中从1开始,在python中从0开始 即:MATLAB中的第一个元素是元素1,而在python中它是元素0。

答案 1 :(得分:0)

让我们逐行尝试:

outframe(:,[4:4:nout-1]) = 0.25*inframe(:,[1:n-1]) + 0.75*inframe(:,[2:n])

将“英语”转换为:所有行的外框,但只有每4行从4到nout-1(即4,8 ..)。我假设您了解帧参考的含义。

pos=(beamnum>0)*(beamnum<=nbeams)*(binnum>0)*(binnum<=nbins)*((beamnum-1)*nbins+binnum)

可能是beamnum是向量而且(beamnum> 0)返回{0,1}的向量,使得元素为'1',其中相应的beamnum元素> 0,否则为0.其余的是很清楚,我希望。

第二行是for循环,最后一行应该是明确的。