How do I plot output of function symclip?

4 Ansichten (letzte 30 Tage)
Andrew Smith
Andrew Smith am 18 Apr. 2021
Beantwortet: Pratyush Roy am 12 Mai 2021
I am attemtping to recreate the m-file functions used by Zolzer in his Digital Audio Effects book. He has an M-file called symclip as shown below and I have included a recorded audio file to apply the clipping effect to. However, I cannot plot the output.
function y=symclip(x);
[x, fs] = audioread('E NOTE.wav');
% y=symclip(x)
% "Overdrive" simulation with symmetrical clipping
% x - input
N=length(x) ;
th=1/3; % threshold for symmetrical soft clipping
% by Schetzen Formula
for i = 1:N
if abs(x(i))< th, y(i)=2*x(i);end;
if abs(x(i))>=th,
if x(i)> 0, y(i)=(3-(2-x(i)*3) .^2)/3; end;
if x(i)< 0, y(i)=-(3-(2-abs(x(i))*3) .^2)/3; end;
end ;
if abs(x(i))>2*th,
if x(i)> 0, y(i)=1;end;
if x(i)< 0, y(i)=-1;end;
end ;
end;
plot(N, y)
Any help would be greatly appreciated

Antworten (1)

Pratyush Roy
Pratyush Roy am 12 Mai 2021
Hi Andrew,
According to the code, x is passed as the input argument to the function. However, according to the second line of the code, we get to know about the value x only after we have read the file usin audioread. So we can pass the name of the file as input to the function instead of the MATLAB array containing the sound intensity values.
Another change that can be made to the code is to use the command plot(1:N, y) instead of plot(N,y) since both the arguments for the plot function should be arrays whereas in the latter case it is a value N versus an array y.
You can refer to the code snippet below:
function y=symclip(filename)
[x, fs] = audioread(filename);
N=length(x) ;
th=1/3; % threshold for symmetrical soft clipping
% by Schetzen Formula
for i = 1:N
if abs(x(i))< th, y(i)=2*x(i);end;
if abs(x(i))>=th,
if x(i)> 0, y(i)=(3-(2-x(i)*3) .^2)/3; end;
if x(i)< 0, y(i)=-(3-(2-abs(x(i))*3) .^2)/3; end;
end ;
if abs(x(i))>2*th,
if x(i)> 0, y(i)=1;end;
if x(i)< 0, y(i)=-1;end;
end ;
end;
plot(1:N, y)
Hope this helps!

Kategorien

Mehr zu Audio Processing Algorithm Design finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by