Matlab

2015-12-17 48 views
7

'da bir vektörün başlangıç ​​türünü ayarlama Kullanıcı tanımlı türlerin eklenmesini kabul eden boş bir vektör bildirmek istiyorum. Aşağıdaki örneklerde node ben boş vektör otomatik çift türü olarak başlatılır çünkü Aşağıdaki kod Matlab yorumlayıcı tarafından reddedilir classdef node ...Matlab

ile tanımladığınız bir türüdür, bu yüzden bir node içine yerleştirilen olamaz. vektör bunun içinde bir node ile başlatılır için

>> a = []; 
>> a(1) = node(1,1,1); 
The following error occurred converting from node to double: 
Conversion to double from node is not possible. 

aşağıdaki kod kabul edilir, bu nedenle daha sonra düğümler yerleştirilmiş olabilir.

>> a = [node(1,1,1)]; 
>> a(1) = node(1,2,1); 

Ancak, içine yerleştirilen düğüme sahip olabilir bir boş vektörü yaratmak istiyoruz. Bunu garip bir şekilde yapabilirim:

>> a = [node(1,1,1)]; 
>> a(1) = []; 

En iyi yolu nedir? Boş vektörün ilk türünü node olarak bildiren bir şey arıyorum. Ben sözdizimi makyaj olsaydı, gibi görünecektir:

>> a = node[]; 

Ama bu geçerli değil Matlab sözdizimi var. Bunu yapmanın iyi bir yolu var mı?

cevap

3

Sınıfınızın neyi içerdiğini belirtmezsiniz, ancak evet, genel olarak zeros, ones ve diğerleri gibi kullanıcı tanımlı sınıflar için dizi oluşturma işlevlerini kullanmak mümkündür. dahili sınıflar için

, sen veri türü uint8 sıfırlarının 2 by-3'e matris oluşturmak için

A = zeros(2,3,'uint8');

gibi bir çağrı olabilir. Benzer sözdizimi aynı zamanda, örneğin, kullanıcı tarafından tanımlanan sınıflar uygun türleri için uygulanabilir:

A = zeros(2,3,'MyClass');

'MyClass' sınıfın adıdır veya bir örnekle:

p = MyClass(...); 
A = zeros(2,3,'like',p); 

Bu bilginin kaynağı, kullanıcı tanımlı sınıflardaki dizi oluşturma işlevlerine yönelik desteğin nasıl uygulanacağının bir belirtimiyle birlikte here bulunabilir. Daha sonra zeros(0,0,'MyClass') gibi bir çağrı MyClass türünde boş bir vektör üretecektir.

8

Boş nesne

A = MyClass.empty; 

Bu sizin kendi sınıfında ile çalışır, ama aynı zamanda oluşturulabilir Bu yöntem çok yaratabilir böyle

A = int16.empty; 

olarak Matlab'ın sınıfla Boyutlu boş Bu sözdizimi birimine sahip nesneleri

Bir boyut sıfıra ayarlandığı sürece 10
A = MyClass.empty(n,m,0,p,q); 

.

doc'a bakın.

+0

Çok havalı, bunun varlığından haberi yoktu! – mikkola