1.随机得到一个只有0/1的数组
col = 127;%127bit的码字
lin = 1;
code = unifrnd(0,1,lin,col);%(0,1)均匀分布中随机抽取一些数
for i=1:col
if code(1,i)>=0.5 code(1,i) = 1;
else code(1,i) = 0;
end
end
2.将数组内为1的时候变成某一个值
A(A==x)=X; %将A中等于x的值全部替换为X
A(isnan(A))=X;%将A中等于nan的值全部替换为X
3将指定维度的矩阵相加
C=cat(1,A,B);其中A和B的空间大小一致,1,行(一维),2列(二维)..依次.....
4判断除数是否为零
all函数:检测矩阵中是否全为非零元素,如果是,则返回1,否则,返回0。
any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0。
5e指数的表示方法
1*e-5
或者exp(-0.2),前者不可以用小数....
610的次方
10^(-10)
7将数组左右,上下颠倒
fliplr,flipud
8for 循环倒叙
sum=0;
for i=10:-1:1
sum=i+sum;
end
9向量累加
假设有向量X和矩阵A,那么和求求矩阵元素的累加、累积相关的函数matlab函数用法如下
求向量累加和向量:cumsum(X)
求向量累乘积向量:cumprod(X)
求矩阵每一列的累加和:cumsum(A)、cumsum(A,1)
求矩阵每一列的累积积:cumprod(A)、cumprod(A,1)
求矩阵每一行的累加和:cumsum(A,2)
求矩阵每一行的累积积:cumprod(A,2)
10使用for循环确定变量名
X=zeros(3,4,5);
for i=1:5
eval(['indexf', num2str(i), '=', 'X(:,:,i)', ';']);
eval(['indexb', num2str(i), '=', 'X(:,:,i)', ';']);
end
使用matlab做实验的时候,保存的文件里面的变量名都是一样的 ,所以希望能够把变量名全部都重命名。我举个个例子,假设我一堆文件,文件名分别是gds1,gds2,gds2,….. 但是实际上load进来之后的变量名称都是gds,所以我希望能够把变量名能够改成相对应的文件名称。在这里,我使用了eval这个函数,这个函数到是一个非常方便的选择。
%% 变量批量重命名
clear all
rootname = 'gds';
extension = '.mat';
for i = 1:n
variable = [rootname,int2str(i)];
filename = [variable,extension];
load(filename);
eval(['gds',num2str(i),'=','gds',';']);
save(filename,variable);
clear gds variable filename;
end
clear all
或者使用元胞数组
T= cell(leng,1);
for n = 1:leng
T{n} = X(:,:,n);
end
https://ww2.mathworks.cn/help/matlab/matlab_prog/string-evaluation.html使用其他方法代替eval
访问元胞数组并且赋值T{2,1}(3,5)=6;类似这种
访问元胞数组中的数据https://ww2.mathworks.cn/help/matlab/matlab_prog/access-data-in-a-cell-array.html
12使用for循环判断变量名是否为某一变量名,这个貌似挺难做到的不如直接用元胞数组。
13conj函数:用于计算复数的共轭值,y=conj(x)函数计算复数x的共轭值。输出结果y的维数跟输入x的维数一致,返回值为:real(y)-i*imag(y)
14统计矩阵中某一个元素数值的个数
%第一种
sum(A(:)==a);
%第二种
length(find(A==a);
%第三种
logical=(A=a);
sum(logical(:));
15 是否是小数
rem(x,1)==0整数,不为0为小数