📄 imtowav2.m
字号:
function [f,st] = imtowav2(name)
FL = 500; FH = 5000; FS = 20000; T = 1.05;
G = imread(name);
G = im2double(G);
[N,M]=size(G);
ir = int16(0); ia = int16(9301); im = int16(233280); ic = int16(4929);
%int i,j,b,d = D;
b = 1; d = 1;
k = 0; ns = int32(FS*T); m = int32(ns/N);
dt = 1.0/FS; scale = 0.5/(N^(1/2));
for i=1:N
w(i) = 2*pi*FL *(FH / FL)^(i/(N-1));
end
for i=1:N
phi0(i) = 2*pi*rem(ir*ia+ic,im)/(1.0*im);
end
wl(ns+36); wl(16);
wi(1); wi(1); wl(0+FS); wl(0+FS); wi(1); wi(8); wl(ns);
tau1 = 0.5 / w(N); tau2 = 0.25 * tau1*tau1; y=0;z = 0.0;
while (k < ns)
s = 0; t = k * dt; j = int16(k / m);
if (j>N-1)
j=N-1;
end
for i=1:N
s = s + G(i,j+1) * sin(w(i) * t + double(phi0(i)));
end
if (k < int16(ns/(5*N)))
s = (2.0*double(rem(ir*ia+ic,im))/double(1.0*im)-1.0) / scale;
end
yp = y; y = tau1/dt + tau2/(dt*dt);
y = (s + y * yp + tau2/dt * z) / (1.0 + y); z = (y - yp) / dt;
y = y*0.5/N^(1/2);
if (y > 1)
y=1;
end
if (y < -1)
y=-1;
end
ss(k+1)=s;
arti2(k+1)=y;
k = k + 1;
end
f=arti2';
st=ss';
sound(arti2,20000,8);
%x=(1:ns);
%plot(x,ss);
%plot(x,arti2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -