matlab日记之对数组的一些操作

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为小数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值