2021-10-11

本文介绍了MATLAB中向量化编程的一些核心技巧,包括如何使用'.+'运算符简化数值运算,利用现有函数处理向量间的运算,以及运用masking技术进行条件判断。此外,还探讨了在矩阵元素上应用函数的两种方式,一种是直接调用支持向量的函数,另一种是通过fun系列函数如arrayfun来处理不支持向量的函数。这些技巧能够提高MATLAB编程的效率和代码的简洁性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MATLAB向量化编程技巧:

  1. 将向量视为基本单位,对于’. + 运算符’能解决的问题,可以直接解决,这是最简单的一类:输入n个数,输出n个数

    %%
    for n=1:10
       n*5
    end
    %%
    
    
    n=1:10;
    n.*5
    
  2. 需要涉及向量间元素的运算,这类问题往往需要借助 MATLAB现成函数来解决,这是较简单的一类:输入n个数,未必输出n个数

    %%
    s=0;
    for k=1:10
       s=1+k;
    end
    %%
    
    n=1:10;
    sun(n)
    
  3. 需要对向量单个元素进行判断的问题,这种问题中应用的技巧被称为masking,用矩阵切片代替判断

    %%
    s=0;
    for k=1:10
       if mod(k,2)==0;
       s=s+k;
    end
    %%
    
    %利用masking判断
    n=1:10;
    n=n(mod(n,2)==0)
    
  4. 需要对矩阵元素进行某种函数运算,且该函数支持输入向量,那直接上就行,这是最简单的情况

    %%
    judgement=[];
    for k=1:10
       judgement=[judgement,isprime(k)];
    end
    %%
       
    %若该函数支持输入向量
    
    judgement=[isprime(1:10)];
    
  5. 若该函数不支持输入向量(因为该函数的实现环节中有不支持向量的运算),则使用

    %%
    %如果用strs=['1','2','3'],那strs将是字符串'123',而非 字符串组:'1','2','3'
    strs={'1','2','3'}
    for k=1:length(strs)
       length(strs(k))
    end
    %%
    
    %利用fun系列函数cellfun来实现该功能
    strs={'1','2','3'}
    cellfun(@length,strs);
    

    fun系列函数:

    bsxfun, arrayfun, cellfun, spfun, structfun

    对自定义函数,如:f=@(x,y) x2+y2;

    arrayfun(f,n)而不能用arrayfun(@f,n),否则无法识别f

    对MATLAB现成函数,则带@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值