在Matplotlib中绘图时的语法错误

时间:2018-08-01 17:58:27

标签: python matlab numpy matplotlib

我正在将一些代码从Matlab转换成Python。在理解此Matlab代码方面,我有些困惑:

plot(m_true(1,[1:p 1]), m_true(2,[1:p 1]),'*', 'Color',[0 0 0])

当我尝试将其翻译成Python时,它看起来像这样:

plot(m_true[1,(1:p, 1)], m_true[2,(1:p 1)],'*', 'Color',[0, 0, 0])

冒号导致语法错误。任何有Matlab绘图经验的人(我是这种语言的新手)都可以解释matlab语法(就1:p的索引编制而言)以及也许如何解决语法错误?

谢谢!

1 个答案:

答案 0 :(得分:1)

在Matlab中,冒号运算符描述了容器的两个值n和m之间的范围。 例如,给定向量x = {4,2,67,2,5,26},以下表达式将值3到6并将其保存在向量y中:

y = x(3:6)

得出以下y值:

67   2   5   26

它的另一个用途是索引矩阵一维的所有元素:

x = rand(5,5)
x(:,1) = 1

将用以下填充矩阵m的第一个列:

1.0000    0.9649    0.8003    0.9595    0.6787
1.0000    0.1576    0.1419    0.6557    0.7577
1.0000    0.9706    0.4218    0.0357    0.7431
1.0000    0.9572    0.9157    0.8491    0.3922
1.0000    0.4854    0.7922    0.9340    0.6555

这里是绘图功能的简化版本:

plot(m(1,[1:3 1]),'*', 'Color',[0 0 0])

绘制x的第一行的值1至3,然后是第一个值(由方括号中的空格表示) 输出图如下所示:

plot(m(1,[1:3 1]),'*', 'Color',[0 0 0])

将图更改为

plot(x(1,[3:4 1]),'*')

(在此处丢弃颜色以进行更好的比较) 将在索引3和4处绘制值,并在索引1处绘制附加值,如下所示:

new values in yellow

至于python中的导入,您可能必须使用“ range”,如本文所述: Python Equivalent of MATLAB's colon operator

我希望这会有所帮助, 干杯, 西蒙