📄 butfly4.m
字号:
function [xk1,xk2,xk3,xk4]=butfly4(x1,x2,x3,x4,wn1,wn2,wn3);
%--输入:x1,x2,wn都是8位有符号数,复数形式
%--输出:xk1,xk2也是8位有符号数,复数形式
% clear all;
% clc;
% % x1=3.6+4*i;
% x2=2+3.6*i;
% x3=6+8*i;
% x4=2+2.4*i;
% wn1=128+0*i;
% wn2=128+0*i;
% wn3=128+0*i;
%
DataWidth=8;
PointDot=64;
xr1=real(x1);
xi1=imag(x1);
xr2=real(x2);
xi2=imag(x2);
xr3=real(x3);
xi3=imag(x3);
xr4=real(x4);
xi4=imag(x4);
wr1=real(wn1);
wi1=imag(wn1);
wr2=real(wn2);
wi2=imag(wn2);
wr3=real(wn3);
wi3=imag(wn3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mid21=xr2-xi2;
mid22=wr1-wi1;
mid23=wr1+wi1;
mul21out=wr1*mid21;
mul22out=mid22*xi2;
mul23out=mid23*xr2;
midaddout2r=mul22out+mul21out; %BWp的实部
midsubout2i=mul23out-mul21out;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mid31=xr3-xi3;
mid32=wr2-wi2;
mid33=wr2+wi2;
mul31out=wr2*mid31;
mul32out=mid32*xi3;
mul33out=mid33*xr3;
midaddout3r=mul32out+mul31out; %CW2p的实部
midsubout3i=mul33out-mul31out;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mid41=xr4-xi4;
mid42=wr3-wi3;
mid43=wr3+wi3;
mul41out=wr3*mid41;
mul42out=mid42*xi4;
mul43out=mid43*xr4;
midaddout4r=mul42out+mul41out; %DW3p的实部
midsubout4i=mul43out-mul41out;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
midadd_acr=round(xr1/2)+floor(midaddout3r/2^DataWidth);
midadd_aci=round(xi1/2)+floor(midsubout3i/2^DataWidth);
midsub_acr=round(xr1/2)-floor(midaddout3r/2^DataWidth);
midsub_aci=round(xi1/2)-floor(midsubout3i/2^DataWidth);
midadd_bdr=round(midaddout2r/2^DataWidth)+round(midaddout4r/2^DataWidth);
midadd_bdi=round(midsubout2i/2^DataWidth)+round(midsubout4i/2^DataWidth);
midsub_bdr=round(midaddout2r/2^DataWidth)-round(midaddout4r/2^DataWidth);
midsub_bdi=round(midsubout2i/2^DataWidth)-round(midsubout4i/2^DataWidth);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% midadd_acr=round(xr1)+round(midaddout3r/2^(DataWidth-1));
% midadd_aci=round(xi1)+round(midsubout3i/2^(DataWidth-1));
% midsub_acr=round(xr1)-round(midaddout3r/2^(DataWidth-1));
% midsub_aci=round(xi1)-round(midsubout3i/2^(DataWidth-1));
%
% midadd_bdr=round(midaddout2r/2^(DataWidth-1))+round(midaddout4r/2^(DataWidth-1));
% midadd_bdi=round(midsubout2i/2^(DataWidth-1))+round(midsubout4i/2^(DataWidth-1));
% midsub_bdr=round(midaddout2r/2^(DataWidth-1))-round(midaddout4r/2^(DataWidth-1));
% midsub_bdi=round(midsubout2i/2^(DataWidth-1))-round(midsubout4i/2^(DataWidth-1));
xkr1=midadd_acr+midadd_bdr;
xkr2=midsub_acr+midsub_bdi;
xkr3=midadd_acr-midadd_bdr;
xkr4=midsub_acr-midsub_bdi;
xki1=midadd_aci+midadd_bdi;
xki2=midsub_aci-midsub_bdr;
xki3=midadd_aci-midadd_bdi;
xki4=midsub_aci+midsub_bdr;
xk1=xkr1+i*xki1; %--组合成复数后输出
xk2=xkr2+i*xki2;
xk3=xkr3+i*xki3; %--组合成复数后输出
xk4=xkr4+i*xki4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -