How can i return the output in an array to be used in a following function?
4 ビュー (過去 30 日間)
古いコメントを表示
charbel hourani
2023 年 1 月 8 日
コメント済み: charbel hourani
2023 年 1 月 25 日
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 I/O and Waveform Generation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!