How to find the energy of a discrete signal?
조회 수: 82 (최근 30일)
이전 댓글 표시
I want to find the energy of this signal in rolling windows.
Note that the energy of a signal x[n] overlapping by a window w[n] is given by the following formula:
where as signal w[n] I will use the Hamming window given by the equation:
I will use window length N = 1000 samples.
I run the below code but without result.
[y,Fs] = audioread('viola_series.wav');
figure(26);
plot(y);
title('Audio viola series.wav');
sound(y,Fs);
N = 1000;
% Normalization
min(y);
max(y);
y_norm = (y-min(y))/range(y)*2-1;
figure(27);
plot(y_norm);
title('Normalized audio viola series.wav');
syms m
w = hamming(1001);
energy_signal = symsum(conv(y_norm.^2,w),m,0,10);
plot(energy_signal);
How to do that?
Thanks in advance
댓글 수: 3
Walter Roberson
2021년 1월 25일
w = 0.54 + 0.46 * cos(2*pi*(0:n)/N);
E = conv(x.^2, w, 'valid')
or perhaps it should be 'same' instead of 'valid'.
답변 (1개)
Shubham Khatri
2021년 2월 5일
Hello,
You can remove the syms and symsum from the code and directly use convolution. Please take a look at the following code. For more information please refer to the documentation for conv here.
[y,Fs] = audioread('viola_series.wav');
figure(26);
plot(y);
title('Audio viola series.wav');
sound(y,Fs);
N = 1000;
% Normalization
min(y);
max(y);
y_norm = (y-min(y))/range(y)*2-1;
figure(27);
plot(y_norm);
title('Normalized audio viola series.wav');
w = 0.54 + 0.46 * cos(2*pi*(0:n)/N);
energy_signal = conv(x.^2, w, 'valid');
plot(energy_signal);
Hope it helps
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!