配色: 字号:
玩转matlab之通信应用
2014-07-23 | 阅:  转:  |  分享 
  
玩转matlab之通信应用(一)



本人所撰写的文章都是由个人经验所集成,如有错误观点请指正,如不喜请勿喷





matlab挺好玩的,也挺强大的,希望更多人喜欢上matlab,学会使用matlab以辅助个人工作与学习。

兴趣是最好的老师,这句话是真理。

假如你把使用matlab当做兴趣的话,我想做不管是做工程的你,还是搞科研的你,预工作应该做得很不赖。什么,说话没什么逻辑,是吧?哈哈。



废话不多说。附图+举例+言简意赅:



编程就是玩逻辑,那么首先就来看看matlab的逻辑语句:%?????

%ifelse

%switchcase

%while



a=3

b=1ones(1,10);

c=2ones(1,10);

d=3ones(1,10);



while(a~=4)

ifa==3

figure(22)

plot(b)

a=1;

elseifa==2

figure(44)

plot(c)

a=0;

elseifa==1

figure(33)

plot(d)

a=2;

else

switcha

case3

a=a+1;

case2

a=a+1;

case1

a=a+1;

case0

a=a+1;

end

end

end



运行以上程序自动无限循环,依次跳出figure(22)、33、44











Matlab的原理就是在玩数字,想得到想要的仿真、画图结果,就要清楚其画图原理,可以自己编写与下面的程序相似的程序,画图,去意会matlab的原理。















以下为循环语句的实例



数组的玩转:为甚么会画出这样呢?自己编程去体会





只要两个数组同时与一个序列有一定的关系,就能用plot(t,y)画图,.其实一样长就可以了呵呵。









懂得了matlab的画图原理及逻辑语句、循环语句,再记住matlab的程序是从上往下依次运行的,再记住几个常用函数,就ok了,已经算matlab初级入门了!!简单吧!!



学会几个最常用函数:

Ones

Zeros

Reshape

Plot

Stem

Find

Max

Min

Randint

Length

Size



序列变:

100:-1:1

1:1:100

1:2:100



玩matlab,最主要的是实现算法!算法就是王道啊!!



玩转matlab之通信应用(二)



本人所撰写的文章都是由个人经验所集成,如有错误观点请指正,如不喜请勿喷



用matlab仿真qpsk;





刚开始学习通信,如何画出像如上的星座图呢?

从图中可以看到四个点:(-1,-1),(1,-1),(-1,1),(1,1),

也就是说我们只有画出这四个点来就成了,

我们从结果入手来指导从开始。

程序如下:



Clc---------------------清楚命令窗口的显示

clearall--------------------清除上次产生的结果

closeall--------------------关闭窗口



original_bits=randint(1,100,[01]);-----------产生100个由0和1组成的随机数



flag=find(original_bits==0);---------------找到原始数据中为0的位置,

将位置寄存为数组形式

original_bits(flag)=-1;--------------------根据数组映射原理,将原始数据中的

0变为-1

----------------以下就是所谓的串并转换,分i、q两路

i=original_bits(1:2:99);---i路



q=original_bits(2:2:100);---q路



xingzuo=complex(i,q);-----------------将i、q两路合为一个复数,然后就可以画图了,因为画复数的时候,默认实部位x轴,虚部为y轴



plot(xingzuo,'''')-----------------画图用‘’来让每个星座点独立起来,不然画出来的会是以下那样,因为星座点之间用线连起来了

axis([-22-22])-----------------------设置显示区域,以便更好观察









同理就可以画出很多调制的星座图来,8qam、16qam、64qam、256qam、8-psk等也是一样的。



玩转matlab之通信应用(三)



本人所撰写的文章都是由个人经验所集成,如有错误观点请指正,如不喜请勿喷

matlab之查看帮助:





学会自己学习帮助里的东西,学会看英文帮助。

(二)matlabGUI编程:









接下来就可以拖拉控件,产生.m文件进行编辑来做一个可视化的程序了。想要深入学习,可以上优酷下载视频进行自学,很简单的,一点也不难!

simulink





Simulink本人用的比较少,因为本人为光通信,一般用optisystem去了。



玩转matlab之通信应用(四)



放个烟花:



%{

y=pointtopoint(x,1,1,0.7,0.8)

z=zmax.(x>0);



y1=pointtopoint(x1,1,1,0.7,0.8)

z1=zmax.(x1>0)



plot3(x1,y1,z1)

holdon

plot3(x,y,z)

holdon

%}

这样为大范围进行注释。



先自定义个函数点到点的线的画图;

functiony=pointtopoint(x,x1,y1,x2,y2)



y=(x-x1)/(x1-x2)(y1-y2)+y1;



End

自定义完个函数后就可以开始了;



closeall

clc

clearall

x=1;

y=1;

figure(1)

forzmax=1.01:0.1:2.01



z=1:0.01:zmax;



plot3(x,y,z,''b-'')

pause(0.05)

holdon



axis([020203])

end



forzmax=1.01:0.1:2.01



z=1:0.01:zmax;



plot3(x,y,z,''w-'')

pause(0.0001)

holdon



axis([020203])

end





z=zmax;



plot3(x,y,z,''b'')

pause(0.0005)

plot3(x,y,z,''w'')



forxmax=1.11:0.01:1.51

x=1.1:0.01:xmax;

y=pointtopoint(x,1,1,2,1);

z=zmax.(x>0);









delta=xmax-1.1;

x1=(0.9-delta):0.01:0.9;

y1=pointtopoint(x,1,1,2,1);

z1=zmax.(x1>0);



plot3(x1,y1,z1)

holdon

plot3(x,y,z)



holdon



y=pointtopoint(x,1,1,2,2);

z=zmax.(x>0);



y1=pointtopoint(x1,1,1,2,2);

z1=zmax.(x1>0);



plot3(x1,y1,z1)

holdon

plot3(x,y,z)

holdon



y=pointtopoint(x,1,1,0.5,1.3);

z=zmax.(x>0);



y1=pointtopoint(x1,1,1,0.5,1.3);

z1=zmax.(x1>0);



plot3(x1,y1,z1)

holdon

plot3(x,y,z)

holdon

x2=1;

y2=1;

z2=xmax+1;

plot3(x2,y2,z2)



holdon







end



pause(0.000001)



forxmax=1.11:0.01:1.51

x=1.1:0.01:xmax;

y=pointtopoint(x,1,1,2,1);

z=zmax.(x>0);







delta=xmax-1.1;

x1=(0.9-delta):0.01:0.9;

y1=pointtopoint(x,1,1,2,1);

z1=zmax.(x1>0);



plot3(x1,y1,z1,''w'')

holdon

plot3(x,y,z,''w'')



holdon



y=pointtopoint(x,1,1,2,2);

z=zmax.(x>0);



y1=pointtopoint(x1,1,1,2,2);

z1=zmax.(x1>0);



plot3(x1,y1,z1,''w'')

holdon

plot3(x,y,z,''w'')

holdon



y=pointtopoint(x,1,1,0.5,1.3);

z=zmax.(x>0);



y1=pointtopoint(x1,1,1,0.5,1.3);

z1=zmax.(x1>0);



plot3(x1,y1,z1,''w'')

holdon

plot3(x,y,z,''w'')

holdon

x2=1;

y2=1;

z2=xmax+1;

plot3(x2,y2,z2,''w'')



holdon





end





plot3(1,1.5,2,'''')

plot3(1.5,1.5,2,'''')

plot3(1.5,1,2,'''')

plot3(1,0.5,2,'''')

plot3(0.5,1,2,'''')

plot3(0.5,0.5,2,'''')

pause(0.05)

plot3(1,1.5,2,''w'')

plot3(1.5,1.5,2,''w'')

plot3(1.5,1,2,''w'')

plot3(1,0.5,2,''w'')

plot3(0.5,1,2,''w'')

plot3(0.5,0.5,2,''w'')



程序效果如下:











程序运行结果:如上,依次往下出现。

献花(0)
+1
(本文系小小锐DarkR...首藏)