How can i return the output in an array to be used in a following function?
조회 수: 3 (최근 30일)
이전 댓글 표시
Hello everyone!,
I am using the following formula to determine the atmospheric absorption based on each frequency according to a given distance. The array of frequencies was given based on a third-octave band.
myFreqArray = [25 32 40 50 63 79 100 126 158 200 251 316 398 501 631 794 1000 ...
1259 1585 1995 2512 3162 3981 5012 6310 7943 10000 12589 15849 19953];
%----------------
for f=myFreqArray
z = 0.1068 * exp (-3352 / T) * (frN + f^2 / frN)^(-1);
y = (T / To)^(-5/2) * (0.01275 * exp (-2239.1 / T) * (frO + f^2 / frO)^(-1) + z);
alpha = 8.686 * f^2 * ((1.84 * 10^(-11) * (pa / pr)^(-1) * (T / To)^(1/2)) + y); %[dB/m]
pt = pi * exp(-x * alpha * d)
AtmosphericAbs=alpha*d;
Aabs=20 * log10(pt/p0);
Gain = Aabs - LdBinitial;
end
%myGainArray = [G1, G2, G3, G4, G5, G6, G7, G8, G9, G10, G11, G12, G13, G14, G15,...
% G16, G17, G18, G19, G20, G21, G22, G23, G24, G25, G26, G27, G28, G29, G30];
release(graphicEQ); % Release system memory from previous run
graphicEQ = oneThirdOctaveGraphicEQ;
oneThirdOctaveGraphicEQ.Bandwidth = '1/3 octave';
oneThirdOctaveGraphicEQ.Gains = myGainArray;
equalizer = graphicEQ;
But I need help please to be able to take the result of the "Gain" output for all the frequencies and arrange them in an array based on the frequency array input. So I can use that output array to generate my graphic Eq.
Thank you for your help!
댓글 수: 2
Torsten
2023년 1월 8일
Which of the other variables you use in your code (T, frN, To, fr0, pa, pr, alpha, d, pt, p0) above are arrays like myFreqArray, which are scalar values ?
채택된 답변
Sulaymon Eshkabilov
2023년 1월 8일
Here is the corrected code:
myFreqArray = [25 32 40 50 63 79 100 126 158 200 251 316 398 501 631 794 1000 ...
1259 1585 1995 2512 3162 3981 5012 6310 7943 10000 12589 15849 19953];
%----------------
f = myFreqArray; % Renaming is optional that is for the sake of easiness of coding
for ii=1:numel(f);
z = 0.1068 * exp (-3352 / T) * (frN + f(ii)^2 / frN)^(-1);
y = (T / To)^(-5/2) * (0.01275 * exp (-2239.1 / T) * (frO + f(ii)^2 / frO)^(-1) + z);
alpha = 8.686 * f(ii)^2 * ((1.84 * 10^(-11) * (pa / pr)^(-1) * (T / To)^(1/2)) + y); %[dB/m]
pt = pi * exp(-x * alpha * d)
AtmosphericAbs=alpha*d;
Aabs=20 * log10(pt/p0);
Gain(ii) = Aabs - LdBinitial;
end
%myGainArray = [G1, G2, G3, G4, G5, G6, G7, G8, G9, G10, G11, G12, G13, G14, G15,...
% G16, G17, G18, G19, G20, G21, G22, G23, G24, G25, G26, G27, G28, G29, G30];
release(graphicEQ); % Release system memory from previous run
graphicEQ = oneThirdOctaveGraphicEQ;
oneThirdOctaveGraphicEQ.Bandwidth = '1/3 octave';
oneThirdOctaveGraphicEQ.Gains = myGainArray;
equalizer = graphicEQ;
댓글 수: 3
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Audio Processing Algorithm Design에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!