0

但是我尝试测试我是否x失败[],似乎它应该是微不足道的,但无法弄清楚如何去做。

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

ans = []

我试过了

x == []
x
isempty(fieldnames(x))
isEmpty(x)

但没有任何效果

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

有任何想法吗?

4

1 回答 1

0

x是一个struct,对吧?在这种情况下,根据MA​​TLAB 新闻组上的这篇文章,结构有两种空虚:

  1. S = struct()=> 没有字段

    isempty(S)是 FALSE,因为S是一个没有字段的 [1 x 1] 结构

  2. S = struct('Field1', {})=> 字段,但没有数据

    isempty(S)是 TRUE,因为S是一个带有字段的 [0 x 0] 结构

对我来说,isempty(fieldnames(S))至少只适用于 Octave 中的第一个案例。

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

>> 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
于 2013-07-23T15:15:57.100 回答