2014-09-11 49 views
2

什麼是括號[]在Matlab中做,如果沒有填充數字?什麼是括號`[]`在Matlab中做,如果沒有填充數字?

假設我們有一些對象obj1obj2ClassAobj3。顯然,它有可能將它們與在括號結合..不知道,它實際上是什麼

objects = [obj1 obj2 obj3]; 

>> class(objects) 

ans = 

ClassA 

>> objects 

objects = 

    1x3 ClassA handle 

    Properties: 
    name 
    ... 
  1. 請告訴我該叫什麼?
  2. 如何迭代構建這樣的事情?
    objects = []; objects(end+1) = current_obj;不起作用
    objects{end+1} = current_obj;創建一個細胞
  3. 一個怎樣轉換這封電子郵件。 G。從一個單元格與對象?

當在現場再次使用[]符號它給

K>> [objects.name] 

ans = 

Object1Object2Object3 

K>> class([objects.name]) 

ans = 

char 
+0

一方括號創建一個向量或矩陣 – 2014-09-11 07:33:22

回答

7

[obj1 obj2 obj3]ClassA類對象的陣列,就像[1 2 3]是一組數字。

如果鍵入a = []; a(2) = 1,MATLAB將返回a[0 1],換句話說,它會填補a用默認元素其中,在數字的情況下,是零的任何不確定因素。

當你鍵入objects = []; objects(2) = current_obj,MATLAB同樣試圖將current_obj在要求的位置的objects 2,然後以填補ClassA類的默認對象的不確定因素。爲此,它調用ClassA的構造函數,但是您需要知道它調用的構造函數沒有輸入參數。因此,如果您希望能夠支持這種填充類的對象的數組,您需要實現類構造函數,以便在使用零輸入參數調用時不會出錯。例如,您可以簡單地檢查nargin,如果它爲零,則提供一些默認輸入,否則接受提供的任何輸入。

順便說一句,默認[]double類。如果你想創建一個ClassA類的空數組,你可以使用objects = ClassA.emptyempty全部 MATLAB類的內置方法。您可能會發現,通過確保您不會意外嘗試連接double與類ClassA的對象,可避免一些錯誤。

+0

'objects = ClassA.empty'是一個很好的提示。我會使用單元格,但'[objects.property]'語法非常方便收集對象的屬性值。 – embert 2014-09-24 13:13:26

0

如果你真的需要對象的空數組,使用一些對象必須和索引「一無所有」(2比1) :

x=obj1(2:1) 

結果是具有匹配類型的空數組。在這裏你可以使用x(end+1)追加。或者,您可以使用類似的代碼來追加。如果x不存在,它將使用匹配的類型創建。

if exist('x','var') 
    x(end+1)=obj 
else 
    x(1)=obj 
end 
+1

如果您需要一個空的對象數組,請使用'ClassName.empty'。 'empty'是所有MATLAB類的內置方法,僅爲此目的而定義。 – 2014-09-11 08:43:26

+0

@SamRoberts:從來沒有注意到這樣的功能存在。使用'empty'確實是更好的解決方案。 – Daniel 2014-09-11 14:10:25

0

你正在做的是創建結構。我會做的是objects創建相同的結構,然後用你的第一個對象覆蓋第一個指數,然後通過其他重複:

% Assume we have classA.m file available 
obj1 = classA(); 
obj2 = classA(); 
obj3 = classA(); 

objects = obj1; 
objects(end+1) = obj2; 
objects(end+1) = obj3; 
+0

它們不是結構,它們是數組。 – 2014-09-11 08:28:17

+0

@SamRoberts,我指的是obj本身。問題是這些東西叫什麼。我明白變量'objects'是一個結構數組。 – Kousha 2014-09-11 19:07:49

+0

'對象'不是一個結構數組,它是'ClassA'類的一個對象數組。在問題中沒有提到結構或結構數組。 – 2014-09-11 21:57:06

0

方括號是串聯

如果方括號之間的元素,你是串聯的元素。

元素可以是標量,字符串,向量,矩陣等。

假設對象的姓名字段結構包含一個字符串,您可以連接所有的人都像這樣:

[objects.name] 

結果將是:

[objects(1).name objects(2).name ... objects(end).name] 
相關問題