Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

How to vectorise the filter function with multiple window-sizes?

조회 수: 1 (최근 30일)
Sven Koerner
Sven Koerner 2017년 5월 10일
마감: MATLAB Answer Bot 2021년 8월 20일
The task is to calculate the maximum of a moving rms-value of a signal, which is available with a constant timestep dt. So the signal has the length of T*dt and the RMS-value shall be calculated for a period tau=1*dt, tau=2*dt, tau=3*dt, ... tau=T*dt. At the end of this calulation the max of the moving rms value shall be selected. Actually I use the filter-function in a for-loop, but maybe it is possible to vectorise the calculation?
  댓글 수: 2
Jan
Jan 2017년 5월 11일
Please post your code. This would allow to suggest improvements, which is much easier than creating the function from scratch based on your description.
Sven Koerner
Sven Koerner 2017년 5월 12일
Hi Jan,
please see below:
function [tau, werte_eff_H ] = twa_stat_2(signal)
% any signal-vector;
signal_eff = signal.^2; % To calculate the RMS-Values
no_value = size(signal,1);
tau = (1:1:no_value)';
werte_eff_H = NaN(size(signal,1)+1, no_value); % Preallocation
for i=1:size(tau,1)
zb_werte_eff = sqrt(filter(ones(1,tau(i,1))./tau(i,1),1,[signal_eff(1:no_value); signal_eff(1:tau(i,1)-1,1); 0 ] ));
werte_eff_H(:,i) = zb_werte_eff(0+tau(i,1):no_value+tau(i,1),1);
end
werte_eff_H = werte_eff_H(1:end-1,:);
end
I'd like to check, whether there is a possible vectorisation of the internal loop by any matrix-calculations.

답변 (0개)

제품

Community Treasure Hunt

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

Start Hunting!

Translated by