2013-07-23 53 views
0

但是,我試圖測試如果x[]我失敗了,似乎它應該是微不足道的,但無法弄清楚如何去做。檢查[] simulink

,如果我跑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 

任何想法?

回答

0

xstruct,對不對?在這種情況下,根據this posting在MATLAB新聞組,存在兩種空虛對於結構:

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

    isempty(S)是FALSE,因爲S爲[1×1]結構而不字段

  2. S = struct('Field1', {}) =>字段,但沒有數據

    isempty(S)是TRUE,因爲S是[0 X 0]與結構域

對我來說,isempty(fieldnames(S))僅適用於在八度的第一種情況下,至少。

另一方面,如果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 
+0

http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/153192上的相似討論 – am304