(一) 软件使用
1、恢复默认窗口布局
主页—布局—默认
2、快捷键
(1)将光标快速移动到代码最上端
Ctrl + Home
(2)将光标快速移动到代码最底部
Ctrl + End
(二)常用代码
1、固定随机值 rng(2)
2、清除工作区缓存数据
clear all
clc
3、清除工作区缓存数据
theta = -pi + (pi+pi)*rand(1,M); % 产生维度为1*M-π,π的行向量
Phi = diag(exp(1*1i*theta)); % 初始化随机ris矩阵
4、保存和调用变量
(1)保存变量
Q_sample是定义的矩阵,Q是给它取的名字
clear all
clc
N1 = 128; %基站天线数量
M1 = 128; %RIS元件数量
save M M1
save N N1
(2)调用变量
变量名字和保存的时候一样
load M M1
M = M1;
load N N1
N = N1;
4、画图
clear all
clc
f2=figure(2); %给每一幅图命名,不命名的话如果运行多幅图就共用一个窗口,会覆盖,命名之后产生新的窗口
plot(t,t-1,'-o','linewidth',1)%1
hold on;
plot(t,SNR11_db,'g','linewidth',1)%2
hold on;
plot(t,SNR_ran11_db,'--b','linewidth',1)%3
hold on;
plot(t,SNR_with1,'-.^r','linewidth',1)%4
hold on;
plot(t,SNR_with2,'-.vc','linewidth',1)%5
hold on;
plot(t,t,'s:k')%6
grid on;
xlabel('Number of transmitting antennas','FontSize',14); %横坐轴标签,可以调整大小
ylabel('Receive Sum_Rate (dB)','FontSize',14); %纵坐轴标签
legend('L-RES','ITER-DIS','LS'); %根据plot的先后顺序,命名每一条线
hold off;
(1) plot 的颜色以及线型 (顺序是线形,颜色,标记类型)
(2) plot 的标记类型定义符
(三)基本运算符号和函数
1、基本数学符号
(1) 对数 log2(16);
(2为底数也可以换成10,或者需要的数字)
(2) 根号 sqrt(9);
(3) 除法 1/2=0.5
1\2=2
(4) 取余 mod(10,3)
(10除3的余数)
(5) 平方 a^2
(a)的平方
2、复数运算和取值
(1) 取复数实部和虚部 S = real(z);
C = imag(z);
(2) 求复数的角度
` b_1 = angle(b);` (b为弧度)
`b_2 = angle(b)*180/pi; ` (b为角度)
3、一些特殊值
(1) π pi
(2) 取光速
c1 = physconst('lightspeed');
4、常用函数
(1) e 指数函数 exp()
(括号存放e的指数)
``exp(1i*2*pi)`` (不要用exp(1*i*2*pi),如果一旦加乘号,那么程序里面一旦有已经赋值的i,计算的时候会直接把i的值代入。)
5、基本关系符
(1) 不等于 ~=
(四)矩阵及其运算
1、特殊矩阵
(1) 零矩阵 A=zeros(m,n);
(2) 全1矩阵 A=ones(m,n);
(3) 产生m*n矩阵,这个矩阵的元素都是处于imin和imax之间的整数
p = randi([imin,imax],[m n]);
(4) 返回一个主对角线元素为 1 且其他位置元素为 0 的 n×m 矩阵,即单位阵 I = eye(n,m)
(5) 对角矩阵,关于diag的使用
d = [1,0,0;0,5,0;0,0,9];
d1 = diag(d); %%d1 =[1;5;9] d1是列向量
d2 = diag(d1); %%d2 = [1,0,0;0,5,0;0,0,9]
2、矩阵基本数学运算
(1) 转置 A = B.’
(2) 共轭转置 A = B’
(3) 按元素相除 ./
(4) 按元素相乘: .*
(5) 共轭 conj(A)
(6) 数组求和
` S = sum(A,"all") ` 数组所有元素求和
` sum(A,2) ` 返回包含每一行总和的列向量。
2、矩阵基本操作,行列式
(1) 从矩阵取某几行某几列元素
`a(1:2,3);` 获取矩阵第三列第一行和第二行的元素
`a([1 3],3) ;` 获取矩阵第三列第一行和第三行的元素
`a(2:end,3) ;` 获取矩阵第三列第一行和第三行的元素
`a= A(:,[1 3]) ;` 取矩阵的第一列和第三列
(2) 从0到10,每隔2数取一个值
` A = [0:2:10];`
(3) 求一维矩阵长度
A = [1, 2, 3, 4, 5];
len = length(A); % 返回数组A的长度,即5
(4) 对矩阵元素进行升序或者降序排序
` [c index] = sort(A,'descend'); ` 降序 `[c index] = sort(A,'ascend');` 升序
(5) 返回矩阵的元素最大值 M = max(A)
如果 A 是向量,则 max(A) 返回 A 的最大值。
如果 A 为矩阵,则 max(A) 是包含每一列的最大值的行向量。
(6) 矩阵元素的排列组合
从1-5里面选3个数的所有可能组合,每个组合数字不重复 nchoosek([1:5],3);
向量内所有元素可能得排列方式 a1 = perms(a);
3、行列式运算
(1) 生成特征值和特征向量 [V D] = eig(A);
D是由特征值组成的对角阵,V的每一列是A的一个特征向量
(2) 对矩阵A求逆 Y = inv(A);
(3) 矩阵的迹 trace(A)
主对角线元素之和
(4) 矩阵的逆矩阵 inv(A)
A必须是方阵
4、关于矩阵范数
(1) 矩阵列范数 norm(a,1)
% (每列的所有元素绝对值之和的最大值)
(2) 矩阵行范数 norm(a,inf);
% (每行的所有元素绝对值之和的最大值)
(3) 矩阵的二范数也叫矩阵的欧几里得范数(A的转置乘以A矩阵的结果的特征根最大值的开根号)
b = norm(a);
b1 = norm(a,2);
(4) 矩阵的Frobenius范数 norm(a,'fro');
% (矩阵元素绝对值平方的和的平方根)