how to add variable to array
显示 更早的评论
Hello guys.
I have breathVAL variable, which is showing the numbers - average of PPG and ECG signal. I need this numbers to average to one number. I know that i have to add this numbers to some array like breathVAL_total and than divide it with the length of this array. Can you help me please? Thanks.
function breathVAL = vaseFCE( PPG, ECG, fs)
%%UPRAVA EKG SIGNALU
[b, a] = fir1(2, 0.032, 'low'); %vytvorenie FIR filtra dolnej priepusti, 0.032 - medzni frekvence
y = filtfilt(b, a, ECG); %pre urceny EKG signal aplikujeme filter dolnej priepusti
[peaks, poloha] = findpeaks(y, 'MinPeakDistance', 320); %funkcia, ktora hlada vzdialenosti medzi peakmi v signale
ECG_sprac = length(poloha); %funkcia, ktory vyhodi pocet peakov v signale
%UPRAVA PPG SIGNALU
[b, a] = fir1(2, 0.032, 'low'); %vytvorenie filtra dolnej priepusti, filter 2 radu
y = filtfilt(b, a, PPG); %pre urceny PPG signal aplikujeme filter dolnej priepusti
[peaks, poloha] = findpeaks(y, 'MinPeakDistance', 320); %funkcia, ktora hlada vzdialenosti medzi peakmi v signale
PPG_sprac = length(poloha); %funkcia, ktory vyhodi pocet peakov v signale
breathVAL = (ECG_sprac + PPG_sprac) / 2; %priemer EKG a PPG signalu = vysledna hodnota breathVAL = odhad dychovej frekvencie
%breathVAL = 15*(mean(PPG) + mean(ECG)) + fs - fs;
end
4 个评论
Benjamin Großmann
2021-4-30
Can you explain your problem in detail? If you want to get the average of an array you can use mean(array), check the help page to see additional inputs like 'all' or dim when dealing multi-dimensional arrays. For 1-D arrays, this is more or less equivalent to sum(array)/numel(array) with 200 lines of data type and dimension handling.
Dominik Smolinsky
2021-4-30
Benjamin Großmann
2021-4-30
If breathVAL is a 8000x1 array, then you can write
breathVAL_AVG = mean(breathVAL);
But looking at your code you wrote
breathVAL = (ECG_sprac + PPG_sprac) / 2;
ECG_sprac as well as PPG_sprac are the output of length() if you use matlabs function length, then the output is scalar and so is breathVAL. The result of mean() on a scalar value is the value itself.
Dominik Smolinsky
2021-4-30
回答(1 个)
Benjamin Großmann
2021-4-30
Okay, maybe I understood the problem:
If you have an array of PPG and ECG values and a constant fs you could do something like:
fs = 100;
breathVAL_array = arrayfun(@(p,e) vaseFCE(p, e, fs), PPG_array, ECG_array);
breathVAL_mean = mean(breathVAL_array);
Arrayfun is calling your function vaseFCE for every element in PPG_array and ECG_array, calculating the scalar breathVAL and collecting them in breathVAL_array. After that you can call mean to get the average.
2 个评论
Dominik Smolinsky
2021-4-30
Benjamin Großmann
2021-5-3
It depends on how you call the function "vaseFCE" at the moment. Most often one can replace the call to a function directly with an arrayfun method.
类别
在 帮助中心 和 File Exchange 中查找有关 Smoothing and Denoising 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!