请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

52matlab技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 73|回复: 0

初始化更简洁的函数

[复制链接]
  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
    发表于 2017-10-25 16:00:09 | 显示全部楼层 |阅读模式
    用 deal() 让初始化更简洁。 合并内容相同的初始化:
    % 假如要初始化A,B,C和D为3*4阶矩阵,平常我们会用如下代码
    A = zeros(3,4);
    B = zeros(3,4);
    C = zeros(3,4);
    D = zeros(3,4);
    % 利用deal()改造后,简洁相当多
    [A,B,C,D] = deal(zeros(3,4));



    当然,初始化的内容不一定都相同,但是仍然可以缩成一行
    % 如以下例子
    A = zeros(3,4);
    B = [];
    C = ones(2);
    D = cell(2);
    % 可以用deal()改造,只是长一点
    [A,B,C,D] = deal(zeros(3,4),[],ones(2),cell(2));

    初始化结构体数组,当行数特别多时,优势明显
    % 正常方法初始化3行,两个field的结构体数组:
    inl = {0, 0, 0};
    % 必须得元胞数组,有些麻烦
    s = struct('f1',inl,'f2',inl);
    % 用deal改进
    [s(1:3).f1,s(1:3).f2] = deal(0);
    % 如果内容不一样,就每个field分开来
    [s(1:3).f1] = deal(0);
    [s(1:3).f2] = deal(zeros(3)); % 把3改成任意行数n
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|52matlab技术论坛    

    GMT+8, 2018-2-26 09:50 , Processed in 0.530487 second(s), 29 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表