%此文件为cordic的测试文件
clear all
clc
Level = 18;%采用18级
Xin = 1;
Yin = 1;
Zin = -90:10:180;
Xout = zeros(1,19);
Yout = zeros(1,19);
Zout = zeros(1,19);
erro = zeros(1,19);
for i = 1:19
[Xout(i),Yout(i),Zout(i),erro(i)] = CordicTop(Xin,Yin,Zin(i),Level);
end
% fprintf('输入坐标为:(%f,%f)\n',Xin,Yin);
% fprintf('旋转弧度为:%f°\n',Zin);
% fprintf('旋转后的坐标为:(%f,%f)\n',Xout,Yout);
% fprintf('旋转后的弧度为:%f°\n',Zout);
% fprintf('旋转误差为%f°\n',erro);
Xout
Yout
Zout
erro
merro = sum(abs(erro))/19
plot(-90:10:90,erro)
xlabel('角度(度)')
ylabel('误差值(度)')
erro_fpga = [0 0.0313 0.0556 -0.0036 -0.0127 0.0217 -0.0027 0.0172 -0.0082 0.0521 0.0142 0.0243 0.0415 0.0497 -0.0006 -0.0114 0.0589 0.0201 0.0522];
merro_fpga = sum(abs(erro_fpga))/19
plot(-90:10:90,erro_fpga)
xlabel('角度(度)')
ylabel('误差值(度)')