Logarithmic amplitude scaling of a signal
5 ビュー (過去 30 日間)
古いコメントを表示
I need to logarithmically scale the amplitude a sinesweep signal from
at the starting frequency to
at the lastest frequency (it should be 12 dB per octave).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1294185/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1294190/image.png)
Is this code wrong? Why if I plot the exponential shape and the scaled signal the profiles does not overlap?
duration_sweep = 2; % Seconds
% Sine sweep frequency range
f_start = 100;
f_end = 10000;
%--------------------------------------------
% Settings sweeptone
duration_final_silence_sweep = 0.1; % Secondi
total_duration_sweep = duration_sweep + duration_final_silence_sweep ;
sweep = sweeptone(duration_sweep,duration_final_silence_sweep,Fs,"SweepFrequencyRange",[f_start f_end]);
% Time axis
t_input = (0:numel(sweep)-1);
% Scaling factor
amp = logspace(log10(0.1*10^-3), log10(10), length(sweep));
% amplitude scaling
out = sweep.*amp';
% Plot
figure(1)
plot (out, 'LineWidth', 1.5)
hold on
plot(t_input, amp)
grid minor
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1294225/image.jpeg)
3 件のコメント
Jeffrey Clark
2023 年 2 月 13 日
@Lorenzo Lellini, you are also using the length of sweep four your amp but sweep includes the silence duration as indicated in sweeptone documentation.
採用された回答
Jeffrey Clark
2023 年 2 月 14 日
@Lorenzo Lellini, note that your curve is assuming a full scale sweep of +/- 1 whereas sweeptone produces +/- 0.5 so you need to plot 0.5*amp. And as in my comments above, you need to exclude fix(duration_final_silence_sweep*Fs) bins from the end of sweep.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Octave についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!