matlab 程序,有3段matlab程序,有些地方看不懂,比如在LinearFeedbackShiftRegister里头,P=length(generator)为什么单独执行不出来,这个length跟第一段里头的length=SF*code_length 是同一个length吗?程序如下:(1)%F

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 03:24:47
matlab 程序,有3段matlab程序,有些地方看不懂,比如在LinearFeedbackShiftRegister里头,P=length(generator)为什么单独执行不出来,这个length跟第一段里头的length=SF*code_length 是同一个length吗?程序如下:(1)%F

matlab 程序,有3段matlab程序,有些地方看不懂,比如在LinearFeedbackShiftRegister里头,P=length(generator)为什么单独执行不出来,这个length跟第一段里头的length=SF*code_length 是同一个length吗?程序如下:(1)%F
matlab 程序,
有3段matlab程序,有些地方看不懂,比如在LinearFeedbackShiftRegister里头,P=length(generator)为什么单独执行不出来,这个length跟第一段里头的length=SF*code_length 是同一个length吗?程序如下:
(1)
%File simple_dsss.m
code_length=10; %信息码元个数
SF=63; %扩频增益
fs=63000; %采样率
f=100; %信息码速率
%产生信息码
N=1:code_length;
rand('seed',0);
x=sign(rand(1,code_length)-0.5); %x为信息码
for i=1:code_length
s((1+(i-1)*fs/f):i*fs/f)=x(i); %每个信息码元内含fs/f=630个采样点
end
disp('信息码');disp(x);
%伪随机码由MSequence产生
%产生伪随机码
length=SF*code_length; %扩频后的码数
PN_code=MSequence(SF+1);
x_code=reshape(PN_code.'*ones(1,code_length),1,length); %把0,1序列码变换为-1,1调制码
for i=1:(code_length*SF)
w_code((1+(i-1)*10):i*10)=x_code(i); %k_code为扩频码,每个码元内含10个采样点
end
for i=1:SF
jkw_code((1+(i-1)*10):i*10)=PN_code(i);
end
%扩频
k_code=s.*w_code; %k_code 为扩频码
disp('扩频码');disp(k_code);
%BPSK调制
for i=1:length
AI=2;
dt=fs/(f*SF);
n=0:dt/9:dt; %一个载波周期内采样10个点
cI=AI*cos(2*pi*f*SF*n/fs);
signal_t((1+(i-1)*10):i*10)=k_code((1+(i-1)*10):i*10).*cI;
end
plot(signal_t);title('BPSK');
(2)
% File Msequence.m
function Sequence=MSequence(SF)
SFlog2=log2(SF);
if rem(SFlog2,1)~=0,error('SF must be an integer power of 2');end %SF必须是2乘方数,此为64,执行SFlog2=log2(SF)=6,case6!
switch SFlog2
case 6
R=6;instate=zeros(1,6);instate(R)=1;%R=6,生成一个全0一维矩阵,把第R=6位赋值为1,结果是(0 0 0 0 0 1)
N=2^R-1;generator=[0 1 6];
otherwise
error('SF must be a power of 2,>= at 8 and

matlab 程序,有3段matlab程序,有些地方看不懂,比如在LinearFeedbackShiftRegister里头,P=length(generator)为什么单独执行不出来,这个length跟第一段里头的length=SF*code_length 是同一个length吗?程序如下:(1)%F
length(x)函数是求x的长度,
如果x是向量,那就是向量长度或者说元素个数.
如果x是矩阵,那等于max(size(x)),也就是各维长度的最大值.比如二维的就是行数和列数的最大值.
你说P=length(generator)单独执行不了,
当然是了,要先有generator才能调用length()函数,要不它求谁的长度啊?
这个跟第一段里的length不同.
第一段的length是你自己定义的变量,而第三段的length()是个函数.
而且第一段是脚本文件或者说命令文件,相当于把命令行执行的一系列命令保存到一个m文件里.
而第二、三段是函数文件,虽然也是m文件,但首行是function .,
代表不是脚本而是函数,里面的变量跟命令行里定义的变量无关.
如果是两个脚本或者脚本文件跟你手动敲的命令里,都定义了同样名字的变量或函数(同为变量或者同为函数),那后面执行的脚本或命令里的变量或函数就覆盖前面的,不过同样名字的变量跟函数间不会混淆的.
如果是脚本跟函数内部的同名变量,它们之间不会混淆的,函数内部的是局部变量,不受外部同名变量的影响.