?? walsh.m
字號:
function walsh(m)%m階阿達瑪矩陣求解
% m=m/2;%直積法
% k=[+1 +1;+1 -1];
% c=(log(m)/log(2));
% for i=1:c
% k=[k k;k -k];
% end
% z=k;%阿達瑪矩陣表示
%WALSH碼系數相乘法,加入直積法后變為m=m*2
long=length(bz(m-1));
h=zeros(m,long);
for i=1:m
zj=bz(i-1);
h(i,long-length(zj)+1:long)=zj;
end
h=mod(h*h',2);
hae=h;%阿達瑪矩陣表示二進制表示
[i,j]=find(h==0);
num=1;
for b=1:(m)
for a=1:(m)
if (a==i(num) && b==j(num))
h(a,b)=1;
if num<length(i)
num=num+1;
end
else
h(a,b)=-1;
end
end
end
ha=h;%阿達瑪矩陣表示
end
figure;
w=64*m;%拓展寬度
tu=ones(m,w);
t=ones(1,w);
for i=1:m
for j=1:m
tu(i,1+(j-1)*w/m:j*w/m)=ha(i,j);
end
end
subplot
% for i=2:5
% plot3((1:w)/64,i*t,tu(i,:));%畫出第二行~第五行圖形
% hold on;
% end
% grid on;
% axis([1/64 w/64 2 5 -1 1]);
% xlabel('Walsh碼的時域圖');
figure;
ss=ha*ha';
meshz(ss);%plot3(x,y,z,s)
axis([1 m 1 m 1 m ]);
xlabel('Walsh碼的相關性');
function f=bz(num)%十進制轉換為二進制
if num==0
f=0;
else
n=1;
while num>0
if n==1
f=mod(num,2);
n=0;
else
f=[mod(num,2) f];
end
num=(num-mod(num,2))/2;
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -