52matlab技术网站,matlab教程,matlab安装教程,matlab下载

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4184|回复: 0
打印 上一主题 下一主题

初始化更简洁的函数

[复制链接]

125

主题

209

帖子

3078

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3078
跳转到指定楼层
楼主
发表于 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技术网站 ( 粤ICP备14005920号-5 )

GMT+8, 2024-11-29 14:52 , Processed in 0.058724 second(s), 19 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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