# how to add variable to array

9 views (last 30 days)
Dominik Smolinsky on 30 Apr 2021
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
Benjamin Großmann on 30 Apr 2021
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 on 30 Apr 2021
Is there some method or function which can help me average all the scalars(breathVAL) to just one number?

Benjamin Großmann on 30 Apr 2021
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.
Dominik Smolinsky on 30 Apr 2021
@Benjamin Großmann can i ask you where should i put this part of code? you have my code upper
Benjamin Großmann on 3 May 2021
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.