2016-08-18 150 views
-1

我有大约3000行(更改)和3列的矩阵。 我有数量的行和列。 我想绘制图表:MATLAB矩阵运算

x = 1:3000; plot(matrix(x,1))

是否有任何方法可以将所有行包含在plot指令本身中,以便我可以删除'x = 1:3000'?

另外,我想将行数为3000的矩阵的第一列分成3列,每列1000列。任何具体的指示? 我已经为此做了循环,然后我将单独放置在新数组中。但它需要很长时间。

+1

为什么不是'plot(x)'或'plot(x(:,1))'或'plot (x(1:1000))' – percusse

+0

使用'。/'运算符来分开向量。在循环中逐个元素执行操作在Matlab中是非常低效的方法。 –

+0

你好, 你能解释我多一点吗?我是初学者。 –

回答

1

至于绘图问题,使用冒号运算符将绘制所有行你所需的列:

plot(matrix(:,1)); 

编辑:你提到你是一个初学者。如果您以前没有看到冒号操作符如此使用,则在索引到矩阵中时,冒号操作符本身意味着“all __”,如果在第一个位置,则为“all rows”,如果在“all columns”第二个位置。

至于第二个问题,将一列分割成多列的新矩阵,可以使用reshape()函数,该函数将输入矩阵进行重构并输出若干行和列。例如,要的matrix第一列分成3列,并把它们放到newMatrix,使用以下:

newMatrix = reshape(matrix(:,1),[],3); 

注意的是,上述代码在第二个参数(行参数的数目)使用[]为指“自动确定行数”。这是根据列的数量自动确定的,这些列在第三个参数中定义为3.重整函数要求输出行*输出列的数量等于输入行*输入列。因此,在上述情况下,只有起始矩阵有可被3整除的行数时才起作用。

+0

你可以让'reshape'通过'newMatrix = reshape(matrix(:,1),[],3);' – Matt

+0

自动确定这些行是的,谢谢你,那是很好的建议。我会做出改变。 – Tar