Matlab:使用 window 数组的循环
Matlab: For loop with window array
这是我的一维数组A,包含10个数字:
A = [-8.92100000000000 10.6100000000000 1.33300000000000 ...
-2.57400000000000 -4.52700000000000 9.63300000000000 ...
4.26200000000000 16.9580000000000 8.16900000000000 4.75100000000000];
我希望循环像这样进行; (明智地计算平均间隔)- 2,4,8
的间隔长度
(a(1)+a(2))/2 - value stored in one block of a matrix say m= zeros(10)
then (a(1)+a(2)+a(3)+a(4))/4 ------ mean-----
then (a(1)+a(2)..... a(8))/8
然后移动索引:
(a(2)+a(3))/2; - mean
(a(2)+a(3)+a(4)+a(5))/4
(a(2)+a(3)...a(9))/8
SO basically 2^n length interval
%____ my code _____%
A= newArrayy;
sum=0;
storeD = zeros(3,9);
flag=true;
for k=1:9
n=1;
while(true)
if(k+(2^n-1)<10)
meanSum= mean(A(k):A(k+2^n-1))
storeD(n,k)= meanSum;
n=n+1;
else
flag=false;
end
end
结束
我需要找到每个区间的标准差、协方差和均值,但我在 meanSum 线上得到一个错误。
在 meanSum 行,你应该写
A(k:k+2^n-1)
您想访问从 k 到 k+2^n-1 范围内的元素。因此,您必须为选择操作提供范围。
几点建议:
- 使用搜索引擎或知识库收集有关您收到的错误消息的信息。
- 尝试了解哪个操作失败了,以及原则上它应该如何工作(在您的情况下:冒号运算符,例如 http://de.mathworks.com/help/matlab/ref/colon.html)
- 如果你自己的努力没有成功,至少 post 你得到的错误消息可以使问题更清楚。更好的是,提供一个最小的工作示例。在您的情况下,一两行代码就足够了。
A = [-8.92100000000000 10.6100000000000 1.33300000000000 ...
-2.57400000000000 -4.52700000000000 9.63300000000000 ...
4.26200000000000 16.9580000000000 8.16900000000000 4.75100000000000];
sum=0;
storeD = zeros(3,9);
for k=1:9
n=1;
while(1==1)
if(k+(2^n-1)<=10)
meanSum= mean(A(k:k+2^n-1));
storedD(n,k)= meanSum
covVar= cov(A(k:k+2^n-1));
storedC(n,k)= covVar
stdDev= std(A(k:k+2^n-1));
storedS(n,k)= stdDev
n=n+1;
else
break;
end
end
end
So this worked :D Thanks for the help! There was an error in while loop as i didn't use a break to exit the loop.
这是我的一维数组A,包含10个数字:
A = [-8.92100000000000 10.6100000000000 1.33300000000000 ...
-2.57400000000000 -4.52700000000000 9.63300000000000 ...
4.26200000000000 16.9580000000000 8.16900000000000 4.75100000000000];
我希望循环像这样进行; (明智地计算平均间隔)- 2,4,8
的间隔长度(a(1)+a(2))/2 - value stored in one block of a matrix say m= zeros(10)
then (a(1)+a(2)+a(3)+a(4))/4 ------ mean-----
then (a(1)+a(2)..... a(8))/8
然后移动索引:
(a(2)+a(3))/2; - mean
(a(2)+a(3)+a(4)+a(5))/4
(a(2)+a(3)...a(9))/8
SO basically 2^n length interval
%____ my code _____%
A= newArrayy;
sum=0;
storeD = zeros(3,9);
flag=true;
for k=1:9
n=1;
while(true)
if(k+(2^n-1)<10)
meanSum= mean(A(k):A(k+2^n-1))
storeD(n,k)= meanSum;
n=n+1;
else
flag=false;
end
end
结束
我需要找到每个区间的标准差、协方差和均值,但我在 meanSum 线上得到一个错误。
在 meanSum 行,你应该写
A(k:k+2^n-1)
您想访问从 k 到 k+2^n-1 范围内的元素。因此,您必须为选择操作提供范围。
几点建议:
- 使用搜索引擎或知识库收集有关您收到的错误消息的信息。
- 尝试了解哪个操作失败了,以及原则上它应该如何工作(在您的情况下:冒号运算符,例如 http://de.mathworks.com/help/matlab/ref/colon.html)
- 如果你自己的努力没有成功,至少 post 你得到的错误消息可以使问题更清楚。更好的是,提供一个最小的工作示例。在您的情况下,一两行代码就足够了。
A = [-8.92100000000000 10.6100000000000 1.33300000000000 ...
-2.57400000000000 -4.52700000000000 9.63300000000000 ...
4.26200000000000 16.9580000000000 8.16900000000000 4.75100000000000];
sum=0;
storeD = zeros(3,9);
for k=1:9
n=1;
while(1==1)
if(k+(2^n-1)<=10)
meanSum= mean(A(k:k+2^n-1));
storedD(n,k)= meanSum
covVar= cov(A(k:k+2^n-1));
storedC(n,k)= covVar
stdDev= std(A(k:k+2^n-1));
storedS(n,k)= stdDev
n=n+1;
else
break;
end
end
end
So this worked :D Thanks for the help! There was an error in while loop as i didn't use a break to exit the loop.