컴파일 실행환경
matlab본문내용
clear allclc
sigcount= 30; % 랜덤 신호 생성수
sigPower= 5; % 신호세기
T = 2; % T주기 안에 들어가는 신호수
sincRangs = 50; % 주기 (sinc함수 크기보고 결정)
f= T/sincRangs;
rang = 0;
w=1;
temp=0;
for a=0:0.5:1 % 알파값
count=0;
for x=-1:0.01:1 % sinc함수 범위
count=count+1;
if (1-16*a^2*w^2*x^2) == 0
temp = sinc(2*w*x)*(pi/4);
else
temp = sinc(2*w*x)*(cos(2*a*pi*w*x)/(1-16*a^2*w^2*x^2)); %sinc함수
end
sincdata(count) = temp; % x값에 따른 sinc함수 값 저장
sincx(count) = x; % x좌표
end
end
sampleSignal = (2*round(rand(sigcount,1)) - 1)*sigPower; % 랜덤신호 생성 [5 or -5]
flag = 0;
for i=1:sigcount % 신호나누기
if(flag==0)
Isig(i) = sampleSignal(i)/2; % 파워가 반으로 줄어서
Isig(i+1) = Isig(i); % 두비트
flag=1;
else
Qsig(i) = sampleSignal(i)/2;
Qsig(i-1) = Qsig(i);
flag = 0;
end
end
%필터 통과 루프
for i=1:sigcount % 2차원배열로 각sample만큼저장
count=0;
for j=-1:0.01:1
count=count+1;
if i==1
sI(i,count)=sincdata(count)*Isig(i); %첫신호
sQ(i,count)=sincdata(count)*Qsig(i);
else
sI(i,count+((i-1)*50))=sincdata(count)*Isig(i); %샘플링시간만큼 신호 딜레이
sQ(i,count+((i-1)*50))=sincdata(count)*Qsig(i);
end
end
end
allcount=count+(sigcount-1)*50; % 총 data의 길이
Isum(allcount)=0; % 배열 초기화
Qsum(allcount)=0;
for i=1:allcount
for j=1:sigcount
Isum(i)=Isum(i)+sI(j,i); % 샘플된 data에 곱해진 sinc함수들의 합
Qsum(i)=Qsum(i)+sQ(j,i);
end
end
% cosine, sine 함수 생성
for t=0:allcount