首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查[] simulink

检查[] simulink
EN

Stack Overflow用户
提问于 2013-07-23 15:03:42
回答 1查看 845关注 0票数 0

然而,我试着测试x是否是[] --我失败了,似乎它应该是微不足道的,但却找不出该如何做。

如果我运行x = rmi('get',subsystemPath);

代码语言:javascript
复制
ans = []

我试过了

代码语言:javascript
复制
x == []
x
isempty(fieldnames(x))
isEmpty(x)

但什么都不起作用

代码语言:javascript
复制
function requirements = GetRequirementsFromSubsystem(subsystemPath)
    x = rmi('get',subsystemPath);
    if(isempty(fieldnames(x)))          %%%%%%%%%%%%%%%%<------
        requirements = 0;
    else
        requirements = {x.description}; % Fails if do this without a check
    end
end

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 15:15:57

xstruct,对吗?在这种情况下,根据MATLAB新闻组上的本帖,对于结构有两种类型的空化:

  1. S = struct() =>无字段 isempty(S)是假的,因为S是一个没有字段的1x1结构。
  2. S = struct('Field1', {}) =>字段,但没有数据 isempty(S)为真,因为S是带字段的0 x 0结构。

至少对我来说,isempty(fieldnames(S))只适用于八达夫的第一种情况。

另一方面,如果x是一个数组,而不是一个结构,那么isempty(x)应该可以工作。

代码语言:javascript
复制
>> S = struct()
S =

  scalar structure containing the fields:


>> isempty(S)
ans = 0
>> isempty(fieldnames(S))
ans =  1
>> S = struct('Field1',{})
S =

  0x0 struct array containing the fields:

    Field1

>> isempty(S)
ans =  1
>> isempty(fieldnames(S))
ans = 0
>> x = []
x = [](0x0)
>> isempty(x)
ans =  1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17813934

复制
相关文章

相似问题

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