0

내 프로젝트 용 터보 인코더를 만들려고합니다.터보 인코더 inter-leaver가 작동하지 않습니다.

지금까지 1/2 속도의 회선 엔코더를 만들었습니다. 이제는 인터리버를 적용하는 데 어려움을 겪고 있습니다. 여기 내 코드가있다. 나는 ilvr에서 산출물을 얻지 못하고있다. 내가 어디로 잘못 가고 있는지 정정하십시오. 미리 감사는

msg = [0 1 0 1 1 1 0 0 1 0 1 0 0 0 1]; 
t= poly2trellis(3,[6 7]); 
[isok,status] = istrellis(t); 
code1 = convenc(msg,t); 
ilvr = randperm(msg); 
code2 = convenc(ilvr,t); 

답변

0

음, 첫째로, 경우에 귀하의 질문에 왜 msg의 정의와 문제의 라인 이외의 나머지 코드를 포함하는 다음에 대한 ilvr입니까? 나는이 실행할 때

둘째 :

Error using randperm 
Size inputs must be scalar. 

그래서, 이것은 입력이 randperm 기대 한 것이 아니다 의미

msg = [0 1 0 1 1 1 0 0 1 0 1 0 0 0 1]; 
ilvr = randperm(msg); 

을 나는 다음과 같은 오류가 발생했습니다. 그런 다음 help randperm을 입력하고 randperm에 대한 도움말을 살펴 보았습니다. 이제 randperm이 무엇을 의미하며 어떤 입력을 기대하는지 이해합니다. 오류는 randperm에 벡터를 부여했기 때문에 발생하지만 첫 번째 입력은 정수 여야합니다.

그 행에서 무엇을 하려는지 확실하지 않습니다. msg에있는 요소의 임의 순열을 얻으려고하고 있습니까? 도움말 페이지의 힌트에 따라 다음을 시도하십시오.

ilvr=msg(randperm(numel(msg))); 
+0

감사합니다. 사실 나는 터보 인코더를 구축하려고합니다. 2 개의 병렬 convolution 인코더를 사용하여 msg를 인코딩합니다. 이 중 하나의 인코더는 msg가 인터리브 된 후 msg를 인코딩합니다. 따라서 나는 randperm() 함수를 사용하고 있었다. – Naveen