📄 address_sin7.m
字号:
%function address_sin;
%in=pi/4097:pi/4096:2*pi;
in=0:7/8192:7;
quan_width=18;
in_v=round(in.*(2^quan_width)); %quan_width决定了实际地址和量化后的地址差
interval=2/2048
interval_v=round(interval*(2^quan_width-1))%表中的bits小数
addr=round(in/interval);
addr_v=fix(in_v/interval_v);
n=1:1000;
figure(1)
plot(n,addr(n)-addr_v(n),'r');
for i=1:8193
if (addr(i)==0|addr(i)==3217|addr(i)==6434)
addr_quad(i)=0;
else if(addr(i)==1608|addr(i)==4825)
addr_quad(i)=1608;
else
if (addr(i)<1608)
addr_quad(i)=addr(i);
else if (addr(i)<3217)
addr_quad(i)=3217-addr(i);
else if (addr(i)<4825)
addr_quad(i)=addr(i)-3217;
else if(addr(i)<6434)
addr_quad(i)=6434-addr(i);
else
addr_quad(i)=1;
end
end
end
end
end
end
end
end
for i=1:8193
if (addr_v(i)==0|addr_v(i)==3217|addr_v(i)==6434)
addr_v_quad(i)=0;
else if(addr_v(i)==1608|addr_v(i)==4825)
addr_v_quad(i)=1608;
else if (addr_v(i)<1608)
addr_v_quad(i)=addr_v(i);
else if (addr_v(i)<3217)
addr_v_quad(i)=3217-addr_v(i);
else if (addr_v(i)<4825)
addr_v_quad(i)=addr_v(i)-3217;
else if(addr_v(i)<6434)
addr_v_quad(i)=6434-addr_v(i);
else
addr_v_quad(i)=1;
end
end
end
end
end
end
end
%this function is for the creation of .mif file
%parameters:depth,width,radix
%function creat_coe(depth,width);
depth=2^11;%2^11 %depth决定了按量化前后的地址查sin表所得值间区别
width=15;
A=2^(width-1)-1;
sinx=round(A*sin(2*(0:2047)/depth));
% length(sinx)
% plot(addr_quad)
sin1=sinx(addr_quad+1);
sin2=sinx(addr_v_quad+1);
error=sin1-sin2;
figure(2)
plot(error,'g');
figure(3)
plot(addr_quad,sin1,'r');
figure(4)
plot(addr_v_quad,sin2,'y');
figure(5)
plot(addr_quad,sin1,'r',addr_v_quad,sin2,'y');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -