loops - Scilab:无效索引
问题描述
我尝试计算 10 个矩阵条目(1:10、2:11、3:12 等)的平均值,然后从这些平均值中创建一个新矩阵。但是,它总是给我无效的索引。
A=rand(150,1);
number_of_rows=size(A,1);
for i=1:number_of_rows
B=mean(A(i:i+9,1),1);
C(i,:)=B;
end
解决方案
对于任何窗口的长度 n,下面的简单代码都会做到这一点:
A = grand(1,40,"uin",0,9)
n = 10;
C = [0 cumsum(A)];
C = (C(n+1:$)-C(1:$-n))/n
结果(样本):
--> A = grand(1,40,"uin",0,9)
A =
column 1 to 24
3. 2. 2. 9. 2. 6. 1. 5. 1. 5. 7. 2. 5. 8. 3. 0. 3. 8. 3. 3. 4. 8. 8. 1.
column 25 to 40
4. 2. 0. 8. 5. 8. 5. 3. 7. 3. 1. 8. 8. 0. 0. 4.
--> n = 10;
--> C = [0 cumsum(A)];
--> C = (C(n+1:$)-C(1:$-n))/n
C =
column 1 to 20
3.6 4. 4. 4.3 4.2 4.3 3.7 3.9 4.2 4.4 4.2 3.9 4.5 4.8 4.1 4.2 4.4 4.1 4.1 4.3
column 21 to 31
4.8 4.9 4.4 4.3 4.5 4.2 4.8 5.6 4.8 4.3 3.9
--> mean(A(1:n))
ans =
3.6
但是,cumsum() 会传播属于 A 的任何 Inf 或 NaN 值。
推荐阅读
- angular - 如何知道子路由是否已经渲染(来自父组件)
- drupal-8 - 是否可以使用 .yaml 文件创建/管理角色?
- javascript - 量角器自定义定位器无法定位元素
- javascript - 为什么if语句会在while循环中阻塞?
- javascript - 如何使用从 Nodejs 中的 1 个函数返回的数组?
- javascript - 传递 axios 数据到视图模板
- bash - 将字符串添加到bash中的列
- xojo - 更改列表框单元格的背景颜色
- php - 在 PHP 中添加“插入”查询的位置
- python-3.x - 为什么写入文件二进制方法有时会返回一个字母和其他一个十六进制?