2016-03-23 44 views
1

我想将大小为1x117031(X数组)的数组分解为一个大小为Nx140(Y数组)的数组,以便我可以绘制新数组并找出循环过程中的图如何变化测试(N约为1000)。分解数组

这里是我的代码:

mydata=xlsread('average_4_5'); 

for i=100:size(mydata) 
    X(i-99)=mydata(i,10); 
end 

for j=1:1000 
    Y(j, 1:140)=X(1,((140*j)-140):140*j); 
end 

但我得到一个错误:

Subscript indices must either be real positive integers or logicals.

看来问题从X(1,((140*j)-140):140*j)快到了,我没有任何想法,为什么这并未” t认为j是一个整数值。

有关如何进行此转换并绘制Y的行以给出包含1000个条目的图的任何想法?

+2

我不确定我是否完全按照你想要做的,但是听起来你很可能会丢掉所有的循环,并且只使用[''reshape'](http://www.mathworks.com/help/matlab /ref/reshape.html)函数。 – Dan

+1

@丹感谢您的评论。确切地说,我现在用一个重塑功能替换了它,它起作用。感谢提醒我 – Kamran

+0

最好[不要在Matlab中使用'i'和'j'作为变量名称](http://stackoverflow.com/q/14790740/1714410)。 – Shai

回答

3

((140*j)-140)0j1。问题不是j不是整数,而是您不能用0索引矩阵。所以这里的关键字不是整数而是正数

但内置函数reshape应该为您解决这个问题。