[已解决] 求,怎么使用rms函数分段求有效值

[复制链接]
zhangjinyuan007 发表于 2020-12-3 18:57:55
有一个矩阵(300万;1),即300万行,一列的矩阵,怎么对矩阵每10行求有效值,即前10行所有值的有效值,然后是10-20行所有值的有效值,往后以此类推,用到rms函数,最后保存每一个有效值。感谢!!!

最佳答案


coolchen302 发表于 2020-12-4 09:36:55
zhangjinyuan007 发表于 2020-12-4 09:15
大神,函数或变量 'ceiling' 无法识别,是否需要先定义一下ceiling?需要怎么定义呢?还有,rms函数是mat ...

A_rms=rand(300,1);
for m=1:10:length(A_rms)
   A_rms(ceil(m/10))=sqrt(sum((A_rms(m:m+9).^2)/10));
end

程序还是要调试才行。。
RMS我没找到这样的函数,我用的是2020了。其实就是均方根了,用点乘也可以的

6 条回复


coolchen302 发表于 2020-12-3 20:08:37
A_rms=zeros(300e3,1);
for m=1:10:length(A)
   A_rms(m/10)=sum(A(m:m+9).^2)/10);
end

zhangjinyuan007 发表于 2020-12-3 20:35:47
coolchen302 发表于 2020-12-3 20:08
A_rms=zeros(300e3,1);
for m=1:10:length(A)
   A_rms(m/10)=sum(A(m:m+9).^2)/10);

大神你好,我试了一下你的例子,少加小括号的我发现了,然后还报错
A_rms=zeros(300e3,1);
for m=1:10:length(A_rms)
   A_rms(m/10)=sum((A_rms(m:m+9).^2)/10);
end
报错提醒:数组索引必须为正整数或逻辑值。

coolchen302 发表于 2020-12-3 21:31:34
zhangjinyuan007 发表于 2020-12-3 20:35
大神你好,我试了一下你的例子,少加小括号的我发现了,然后还报错
A_rms=zeros(300e3,1);
for m=1:10:le ...

我的锅。。。
A_rms(ceiling(m/10))=sum(((A_rms(m:m+9).^2)/10);

zhangjinyuan007 发表于 2020-12-4 09:15:39
coolchen302 发表于 2020-12-3 21:31
我的锅。。。
A_rms(ceiling(m/10))=sum(((A_rms(m:m+9).^2)/10);

大神,函数或变量 'ceiling' 无法识别,是否需要先定义一下ceiling?需要怎么定义呢?还有,rms函数是matlab2018新出的函数,可以直接求一段数据的有效值,能用上rms函数吗?

还是报错

还是报错

coolchen302 发表于 2020-12-4 09:36:55
zhangjinyuan007 发表于 2020-12-4 09:15
大神,函数或变量 'ceiling' 无法识别,是否需要先定义一下ceiling?需要怎么定义呢?还有,rms函数是mat ...

A_rms=rand(300,1);
for m=1:10:length(A_rms)
   A_rms(ceil(m/10))=sqrt(sum((A_rms(m:m+9).^2)/10));
end

程序还是要调试才行。。
RMS我没找到这样的函数,我用的是2020了。其实就是均方根了,用点乘也可以的
回复此楼

zhangjinyuan007 发表于 2020-12-4 12:54:48
coolchen302 发表于 2020-12-4 09:36
A_rms=rand(300,1);
for m=1:10:length(A_rms)
   A_rms(ceil(m/10))=sqrt(sum((A_rms(m:m+9).^2)/10));

谢谢大神,后面的所求可以改,我慢慢摸索能求各种值了,再次感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表