Matlab 의사 난수 신호 생성(M 시퀀스)
여기에는 두 가지 주요 방법이 설명되어 있습니다. 하나는 m 파일 편집을 사용하는 것이고, 다른 하나는 simulink를 사용하여 생성하는 것입니다
1.m 파일로 편집
Np=63;% 주기 주기
delta_T = 1 % 시계 틱
a=1;% 진폭
%M 시퀀스 초기화
M(1)=1;
M(2)=0;
M(3)=0;
M(4)=1;
M(5)=1;
M(6)=0;
M_XuLie(Np) = 0;
n = 1의 경우 : Np
temp = xor(M(6), M(5));
if(온도 == 0)
M_XuLie(n) = ;
그밖에
M_XuLie(n) = -a;
끝
M(6) = M(5);
M(5) = M(4);
M(4) = M(3);
M(3) = M(2);
M(2) = M(1);
M(1) = 온도;
끝
그림(4)
계단(M_XuLie)
일림([-2 2])
설명:
1. 원리: 코드로 작성되었기 때문에 원리 표현이 그다지 직관적이지 않을 수 있습니다. 원리는 나중에 시뮬레이션 형태로 설명하겠습니다
2. 기간: N개의 시프트 레지스터가 있는 경우 기간은 2^N-1
입니다.3. 주기 계속:
r = 3% 주기
u=repmat(M_XuLie,1,r+1);% M 시퀀스를 입력 신호로 입력에 할당
2. Simulink를 사용하여 M 시퀀스 생성
1 1/Z인 6개의 시프트 레지스터를 선택하고 순서대로 배열하고 초기 조건을 모두 1
으로 설정합니다.2 먼저 이 6개의 시프트 레지스터를 연결하고 첫 번째 출력을 두 번째 입력에 연결하는 식으로 여섯 번째 출력이 OUT에 연결될 때까지 계속합니다. 그런 다음 여기에 스코프를 연결하여 신호 파형을 관찰하거나 작업 공간에 연결합니다(in 이 예는 작업공간에 연결되어 있습니다). 변수 이름과 출력 형식을 다음과 같이 설정합니다.
참고: 행렬 형식 출력을 선택해 보세요. 그렇지 않으면 호출이 불편할 것입니다.
3 논리 연산자를 선택하고 설정, 입력 2개에서 XOR로 조정하세요
4 계속 연결하세요
5 매개변수 설정, 주로 단계 크기 및 총 실행 시간 설정(시뮬레이션 구성 매개변수 설정 메뉴 클릭)
6 클릭하면 실행됩니다. 스코프에 표시되는 것은 m 시퀀스입니다! 또는 명령줄에 Stairs(M_seque)
를 입력하세요.참고: 실제로 이 방법을 사용하면 실제 사용에는 몇 가지 문제가 있습니다. 즉, 출력 신호가 bool 유형, 즉 논리 시퀀스이므로 전달 함수의 입력으로 사용할 수 없습니다. m 파일에서는 double 등의 방법으로 사용할 수 있는데, 변환을 위해서는 Simulink에서 변환할 수 있는 방법이 있어야 하는데 아직 해당 쿼리가 이루어지지 않았습니다.
k=1:length(x) gfpretty(x(k,:));end
m 의사 난수 시퀀스 Matlab 소스 코드
%5주문 m 시퀀스
% MATLAB 명령 창에 다음을 입력합니다:
% fbconnection=[0 1 0 0 1];
% mseq="m"_sequence(fbconnection);
%mseq
함수 mseq="m"_sequence(fbconnection)
n=길이(fb연결);
N=2^n-1;
register=[ones(1,n-1) 1] %시프트 레지스터의 초기 상태
mseq(1)=register(n); %m시퀀스의 첫 번째 출력 기호
for i="2:N"
newregister(1)=mod(sum(fbconnection.*register),2);
for j="2:n",
newregister(j)=register(j-1);
끝;
register="newregister";
mseq(i)=등록(n);
끝
m_sequence.m으로 저장;
위 내용은 MATLAB을 사용하여 광대역 무작위 신호를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!