MATLAB求RMS问题
问题描述:
问题遇到的现象和发生背景
原来是100个点做一次RMS,现在要求每1600个点做一次RMS,但是下一次RMS是使用上一次的35%个点再数到1600做一次RMS(这里可能表述不清,请看图片)。如果这样的话,不用循环语句,用reshape函数如何更改?请帮答疑一下谢谢
问题相关代码,请勿粘贴截图
% 求RMS
data=reshape(data1,100,4800);
data2=sqrt(sum(data.^2)/100);
subplot(313),plot(data2,'b');
title('RMS值')
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
答
可以做的,给你示例:
clc;clear
rng(10)
n = 100*4800; % 总个数
s = 1600; % 样本个数
r = 0.35; % 重叠占比
a = rand(n,1); % 随机生成的n个数
m = n - r*s;
nRow = (1-r)*s;
nCol = floor(m/(nRow));
firstCol = a(1:r*s);
secondCol = a(r*s+1:r*s+nCol*nRow);
M = reshape(secondCol, nRow, nCol); % 下部分
M0 = [firstCol, M(end-r*s+1:end,1:end-1)]; % 上部分
A = [M0; M];
rms = sqrt(mean(A.^2)); % 求RMS
如有帮助还望采纳哟