MATLAB编程语言教程
这MATLAB编程语言教程matlab基础知识,如何启动和退出matlab,流量控制,矩阵,数组,算术运算符,矩阵运算,加载函数,保存函数,绘图函数,matlab脚本和函数以及示例matlab程序。
MATLAB的介绍
本节涵盖matlab的基础知识,包括matlab的好处和matlab的应用。
MATLAB基础
MATLAB是科学的数值分析编程语言。它被广泛应用于需要复杂运算的数学算法开发。它由Mathworks Inc.开发(www.mathworks.com?)matlab的美妙之处在于矩阵运算、数据操作、绘图以及与其他编程语言(FORTRAN、java、c、c++)的接口。GUI也可以在matlab GUI工具的帮助下构建,便于用户与后端matlab代码交互。在本matlab编程教程中,我们将通过matlab编程语法和示例matlab程序。
Matlab工作环境
本节介绍如何启动和退出matlab,加载/保存操作,绘图/图形,脚本和函数,创建和使用数组,向量,矩阵。
如何启动和退出MATLAB
可以使用安装过程中创建的快捷图标或从程序文件启动MATLAB。一旦MATLAB打开,带有以下子窗口的窗口就会打开。
1.命令窗口
2.工作空间
3.命令历史记录
4.菜单/图标
要退出MATLAB,请在命令窗口中输入quit或进入File> exit MATLAB。
加载/保存操作
要保存扩展名为.mat的matlab工作空间变量,请使用以下任意一种方法。
文件>保存或
保存功能
要保存为任何其他格式,请使用。mat以外的适当扩展名,例如。dat
保存函数的语法:
save filename ->用于保存所有工作空间变量到filename指定的文件中
保存文件名var1 var2 ->用于保存文件'filename'中的var1和var2
保存……option ->使用指定的option保存。
要将matlab变量从文件加载到matlab工作空间,请使用以下任何一种方法。
文件>导入数据或
加载函数
load函数的语法:
加载文件名->将所有变量从文件加载到matlab工作区。
加载文件名X Y Z ->将变量X,Y和Z从文件加载到matlab。
图和图形,创建简单的2D图
>> figure和plot是用于根据需要在x, y, z坐标上绘制变量的函数。
>> plot用于2D绘图,plot3用于3D绘图。
>>'mesh'和'meshc'是用于3D绘图的有用函数。
脚本和函数
为不同的应用程序创建.m文件有两种方式。Script是存储为.m文件的命令集,当用户调用以其名称命名的m文件时,脚本将执行按顺序存储的所有命令。脚本不接受或返回任何参数,主要对matlab工作区中可用的数据进行操作。Matlab函数可以接受和返回参数。还定义了局部变量,它们将是各自函数的局部变量。可以在main中定义全局变量。m文件。只需在命令提示符中键入'help'或'help function_name'即可获得要使用的命令或函数的详细描述。
运算符和内置函数
本节涵盖MATLAB中的算术运算符、关系运算符、逻辑运算符、内置函数、输入和输出
算术运算符:
——减去
*用
/分
\左除法
^幂或指数
复共轭转置
()表达式中的求值顺序
关系运算符:
<=小于oe等于
>大于
>=大于或等于
= = =
~=不相等
逻辑运算符:
|逻辑或
~逻辑补码(NOT)
异或异或
重塑
总和
rot90
转置
诊断接头
fliplr
flipud
请参考MathWorks Inc的以下链接,了解MATLAB中提供的许多此类函数。
https://www.mathworks.in/help/matlab/functionlist.html
matlab控制流程
本节将介绍While循环、If-else If-else语句和for循环。
if语句
M = sum(a,b)
elseif气孔导度= 2
M =乘(a,b)
其他的
M =除(a,b)
结束
switch语句
案例1
M = sum(a,b)
案例2
M =乘(a,b)
案例3
M =除(a,b)
否则
错误(“这不可能”)
结束
for循环
对于j = 1:n
H(i,j) = 1/(i+j);
结束
结束
在声明中
当cond1 > cond2
我=我+ 1;
结束
continue和break语句的使用也类似于C编程语言中的使用。
矩阵和向量
本节涵盖了创建矩阵和向量、索引矩阵、初始化和重塑以及矩阵的操作。
矩阵和数组
将A作为矩阵存储在matlab工作空间中,是4 × 4矩阵(4行3列),如下所示。
1 2 3
5 6 7
9 10 11
13 14 15
A(i,j)将提取第i行和第j列元素。
例如A(2,2) = 6。
A(:,1)表示第一列的所有行。
A(2:3,2)表示第二列的第2行和第3行。
单行矩阵称为数组。下面是有5个元素的数组A的例子。
A=[1 2 3 4 5];
矩阵运算
A-B ->两个矩阵的减法
A*B ->两个矩阵的乘法
A.*B ->两个矩阵元素的乘法
A/B ->两个矩阵的右除法,B/A的结果等于B*inv(A)的结果
A./B ->数组右除法,A和B的大小应该相同
A\B ->两个矩阵的左除法,A\B的结果等于inv(A)*B的结果,
A.\B ->数组左除法,A和B的大小应该相同
x^P ->如果x是标量,P是矩阵,x^P是x的矩阵幂P次方使用特征值和特征向量。如果两者都是矩阵,就会产生错误。
A.^B ->阵列功率
A' ->矩阵的转置
一个。' ->数组转置
'length'和'size'函数将给出矩阵/数组的维度。
结构和单元在MATLAB
本节将介绍创建/操作结构和创建/操作单元格。
一个结构将有几个字段,几个字段将有不同类型的数据。单个字段必须包含相同类型的数据。
我们将看到名为“Springsem”的结构示例,其中包含字段course和score,如下所示。
Springsem。分数= [70 80 90];
在命令提示符下输入将生成该结构的所有字段。
> > Springsem
Springsem =
课程:“女士”
分数:[70 80 90]
单元格是MATLAB中最通用的数据对象。它可以包含任何类型的数据,例如数组、字符串、结构或单元格。让我们创建一个如下所示的单元格。
% cell(2)将做同样的事情
C(1,1) = rand(2);在第一个方框中放入一个2x2的随机矩阵
C(1,2) = char('mohan','john');在第二个框中放置一个字符串数组
C(2,1) = Springsem;在第三个方框中放置一个结构
C(2,2) = cell(2,2);%在第四个方框中放置一个2x2单元格
大型matlab程序
本节将介绍使用多个m文件的大型MATLAB程序示例
该程序对理想调制数据添加各种损伤(awgn、频率偏置、瑞利信道和直流偏置)并绘制星座图。
主要。m -> matlab主文件
Frequency_offset ->将包含输入向量的频率偏移
Wimax_mapping ->将根据所选择的调制方案将输入二进制向量转换为复杂数据输出
运行主系统。M文件查看结果。
mod=input('为bpsk输入1,为qpsk输入2,为16qam输入4,为64qam输入6:');
如果mod = = 1
c1 = sqrt (1);
elseif mod = = 2
c1 = sqrt (1/2);
elseif mod = = 4
c1 = sqrt (1/10);
elseif mod = = 6
c1 = sqrt (1/42);
printf('错误的条目');
结束
此部分将根据用户输入的长度生成二进制向量
data =地板(兰德(len) + 0.5);
二进制数据的映射
mapper_out = wimax_mapping(数据”,国防部,c1);
图;情节(真实(mapper_out),图像放大(mapper_out), r +);标题(“理想的星座”);
%增加情况下
信噪比=输入(输入信噪比:”);
map_out_awgn = awgn (mapper_out、信噪比、“测量”);
plot(real(map_out_awgn),imag(map_out_awgn),'r+');title('添加AWGN的星座');
添加频率偏移量%
foff=input('Enter Frequency offset:');%= 10e3;%赫兹
foff = (foff) / 20 e6;% 20MHz是系统的带宽
map_out_foff = frequency_offset (mapper_out foff);
plot(real(map_out_foff),imag(map_out_foff),'r+');title('频率偏移星座');
%添加瑞利通道
choice=input('输入1来应用该通道,其他没有。%10 Hz;采样时间=0.1e-3;
如果选择= = 1)
ts = (256/4e6);
多普勒= 0.1;
Tau =[0.0 0.4 0.9];
Pdb =[0 -15 -20];
Chan = rayleighchan(ts,doppler,tau,pdb);
%TS为输入%0.1e-3的采样时间;
%信号,以秒为单位。FD是最大多普勒频移,单位是赫兹。% 100赫兹
mapper_out map_out_chl =过滤器(chan);
plot(real(map_out_chl),imag(map_out_chl),'r+');title('有通道的星座');
其他的
disp('没有通道应用到直流偏移');
结束
添加直流偏置%
DCO=input('Enter DC offset:');% 2.5;
% map_out_dc =(真实(mapper_out) + DCO) + i *(图像放大(mapper_out) + DCO);
map_out_dc= mapper_out* DCO;
plot(real(map_out_dc),imag(map_out_dc),'r+');title('有DC偏移的星座');
plot(abs(fft(mapper_out,256));title('理想光谱');
plot(abs(fft(map_out_dc,256)));title('频谱与DC偏移');
函数[d1] = frequency_offset(d1,CFO)
M =长度(d1);
d1 = d1.*exp(i*2*pi*(0:m-1)*CFO);
函数[map_out] = wimax_mapping(数据、模式)
Input_seq = data;
开关模式
案例1
b =事实* [1];
案例2
B =fact*[1+1i -1+1i 1-1i -1-1i];
例4
B =fact*[1+1i 1+3i 1-1i 1-3i 3+ 1i3 -1i 3-3i -1+1i -1-3i -3+1i -3+3i -3-1i -3-3i];
案例6
b =事实*(3 + 3我3 + 1 3 3 + 7 + 5我3-3i 3-1i 3-5i 3-7i 1 + 3我1 + 1 1 1 + 7 + 5我1-3i 1-1i 1-5i 1-7i 5 + 3我5 + 1 5 5 + 7 + 5我5-3i 5-1i 5-5i 5-7i 7 + 3我7 + 1我7 + 5 7 + 7 7-3i 7-1i 7-5i 7-7i 3 + 3我3 + 1 3 3 + 7 + 5我3-3i 3-1i 3-5i 3-7i 1 + 3我1 + 1 1 1 + 7 + 5我1-3i 1-1i 1-5i 1-7i 5 + 3我5 + 1 5 5 + 7 + 5我5-3i 5-1i 5-5i 5-7i 7 + 3我7 + 1我7 + 5 7 + 7 7-3i 7-1i 7-5i 7-7i);
否则错误('错误的选择');
结束
数= 1;
count1 = 1;
因为我= 1:(装天花板(长度(input_seq) /模式)
temp = 0;
j = 1:模式
temp = bitor(临时bitshift (input_seq(计数),(j - 1)));
数=计数+ 1;
如果(数>长度(input_seq))
打破;
结束
结束
map_out (count1) = b(温度+ 1);
count1 = count1 + 1;
结束
MATLAB源代码的有用链接
RF无线世界网站的MATLAB源代码部分涵盖了图像处理、信号处理和通bet188金宝搏信领域的MATLAB编码。
请参考OFDM Tx Rx MATLAB代码&MATLAB源代码部分.
更多的链接到MATLAB源代码:-PTS用于降低PAPROFDM前导信号的产生时间偏差估计频率估计信道估计11a WLAN信道11g WLAN信道15.3超宽带通道15.4a UWB信道16d SUI通道16e wimax信道Rician通道瑞利信道SC-FDMAPN序列生成三维绘图AM FM PM调制OFDMA Tx RxAES DES载波聚合CCDF冷杉过滤器IIR滤波器低通FIR维特比译码器CRC8 CRC32