这是程序:
%我以ms_generator(函数名)命名了一个M文件(函数文件类型),放在了A路径下,seq中存放m序列生成值,这个文件运行没有问题
function seq=ms_generator(registers,connections)
registers=[0 0 0 0 1];
connections=[1 0 0 1 0 1];
n=length(connections);
L=2^(n-1)-1;
seq(1)=registers(n-1);
for i=2:L
sum=0;
for m=1:(n-1)
sum=mod(sum+registers(m)*connections(m+1),2);
end
for k=(n-1):-1:2
registers(k)=registers(k-1);
end
registers(1)=sum;
seq(i)=registers(n-1);
end
%接着我又在另建了一个M文件(也是function类型),以auto_corr命名。这下就出错了!我用函数auto_corr()计算二进制序列seq的自相关函数,在这个函数内调用了生成m序列的函数ms_generator(*)生成的m序列seq再计算,但结果总是说第九行出问题了,说是矩阵维数必须一致,这是怎么回事呀?
function auto_correlation=auto_corr(seq)
registers=[1 0 0 0 0];
connections=[1 0 1 0 0 1];
seq=ms_generator(registers,connections);
seq=-1*(seq*2-1);
len=length(seq);
temp=[seq seq];
for i=0:len-1
auto_correlation(i+1)=seq*(temp(i+1:i+len));
end
auto_correlation
plot(0:len-1,auto_correlation);
我这样把两个函数分开写在两个M文件,然后在一个M文件中的函数中调用另一个M文件中那个函数对吗?
改成.*后是: In an assignment A(I) = B, the number of elements in B and
I must be the same.
脚本+函数,是主函数用脚本文件吗?
对 就是在脚本函数中不能出现函数定义,把一切要用的函数另起个文件,并且文件名与定义的函数名相同。
我并不清楚你要算什么 所以改动只是意见。你那个auto_correlation应该是1×n数组吧,那auto
_correlation(n+1)的赋值(=)后面应该是一个数。i+1:i+len貌似不是一个单独的数啊。我觉得最好的方法就是在workspace中看你定义的变量是不是与你想的一样
auto_correlation也是个1*n的数组,从i=0~len-1共n=31位,temp(从i+1~1+len共31位)与seq(也是1*n维数组)的各位相乘后数组成的1*n维数组就是auto_correlation
可否告知,如何建一个脚本文件呀?