首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果值为空,则赋值,如果不增加值,则赋值(Matlab)

问如果值为空,则赋值,如果不增加值,则赋值(Matlab)
EN

Stack Overflow用户
提问于 2012-10-04 03:35:11
回答 3查看 6K关注 0票数 3

在matlab中,是否可以检查一个值是否为空,如果为空,则赋值,否则(如果不为空)在赋值期间递增该值?

例如:

在这段代码中,我递增majorityList{l},尽管在开始时这个单元格是空的(不是0),因此我不能递增它。这意味着我需要先检查它,然后才能递增它。这可以在任务本身完成吗?

代码语言:javascript
复制
 majorityList{l,2} = 'test'; 
 majorityList{l}=  majorityList{l}+1; 

我写的一个解决方案是:

代码语言:javascript
复制
if length(majorityList{l})==0 
     majorityList{l} = 0;
     majorityList{l} = majorityList{l} +1;
else
    majorityList{l} = majorityList{l} +1; 
 end

尽管对于这么简单的东西来说这看起来很丑陋...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-04 03:40:46

为此,请使用isempty

代码语言:javascript
复制
if ~isempty(var)
   var=var+1;
end

另一方面,如果您不知道变量是否存在,请使用exist。

票数 6
EN

Stack Overflow用户

发布于 2012-10-04 04:28:40

如果要递增单值变量,而不是按元素递增矩阵,则可以执行单行、无检查

代码语言:javascript
复制
var = sum(var) + 1; 

如果为空矩阵,则Sum将返回0,否则将返回var的实际值(作为单元素sum)。从empty matrices上运算符的非空输出中,sum将为空值和非空值提供正确的输出。

票数 4
EN

Stack Overflow用户

发布于 2012-10-04 04:09:34

如果您知道要在循环中递增它,最简单的解决方案就是在循环外将majorityList初始化为零:

代码语言:javascript
复制
majorityList{1} = 0;
while loop==running
    majorityList{1} = majorityList{1}+1;
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12715574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档