Do I need to use repmat to plot the RMS at every point in a signal?

Can you please tell me how to plot the RMS at every point in the signal. I think I might need to use the repmat function to do it but I'm not sure.
clear all;
Array=csvread('Pencilbreak-63dB.csv');
col1 = Array(:, 1);
col2 = Array(:, 2);
plot(col1, col2)
end

7 Comments

If your data are the raw signal, the only way I would know to do the rms would be over a sliding window of some number of samples. This is pretty much implied by the title of the figure including "... and moving RMS".
So, the question is, what's the window used; any indication given in the paper?
Thanks for your reply. There is no indication of the window size given. All I know is that the samples are taken every 1 microsecond.
I have uploaded part of the sample file in the question.
You'd have to choose the window size. You'll always have to find that perfect balance between temporal resolution and accurate representation of the signal rms.
you shouldn't create duplicate threads.
The file is of little help/interest...as we're telling you, you'll have to choose a sampling window based on the response time of your system you need.
There are several (actually a veritable plethora) of submissions on File Exchange--do a search for "moving rms".
Thanks for your reply. I'm sorry about the duplicate thread. I just wanted to phrase the question in a better way. Thanks for the help.

Sign in to comment.

Answers (1)

The rms of a single point is not terribly interesting. There are many ways to do what you're trying to do, but you could take a "moving rms", which would be the rms of a small segment of the signal. To center a 101-point rms of your signal (below call it signal ) about point n, you could do
signalrms = NaN(size(signal)); % preallocates the array
for n = 51:length(signal)-51
signalrms(n) = rms(signal(n-50:n+50));
end

2 Comments

Thanks for your code but I don't know how to apply it in my case as my signal is in the form of 2 columns of data. This is the code I have so far to read and plot the data from the csv file:
clear all;
Array=csvread('Pencilbreak-63dB.csv');
col1 = Array(:, 1);
col2 = Array(:, 2);
plot(col1, col2)
end
Yes, we can assume column 1 represents time and column 2 is your signal. In the code above, indices of each value are given by n. That's about as much as I can tell you without actually doing your homework for you.

Sign in to comment.

Categories

Find more on Graphics in Help Center and File Exchange

Asked:

Win
on 18 Feb 2014

Commented:

Win
on 18 Feb 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!