2013-06-10 7 views
5

ben mi çekeyim deal düşündüm ama öyle değil, ben başka güzel bir çözüm bulamıyor.Deal dizi değerleri

Bir dizi a = 1:2 sahiptir. değerleri uğraşmaz Benim için sürpriz

b(1).a = 1 
b(2).a = 2 

, [b(1:2).a] = deal(1:2) ama her alanın yapısının b ait a içine vektör [1 2] koyar: Ben şöyle bir yapı dizisi b içine değerleri 1. ve 2. koymak istiyorum

>> b(1) 
ans = 
    a: [1 2] 

>> b(2) 
ans = 
    a: [1 2] 

Am burada söz dizimi ile bir şey eksik?

cevap

3

deal bunu yapmak bekleniyor yapar. Giriş argümanlarını çıktılar arasında dağıtır ve eğer sadece bir argümanı varsa (vektör 1:2), çıktı argümanlarının sayısı kadar çoğaltır. Muhtemelen aradığını: Genel durumda

[b(1:2).a] = deal(1, 2); %// or simply [b.a] = deal(1, 2) 

, muhtemelen örneğin (num2cell kullanılarak örn) sizin değerlerinden bir hücre dizisi oluşturmak ve bir comma-separated list kullanmak gerekecektir:

C = num2cell(v);   %// v stores the values 
[b.a] = deal(C{:}); 
Eitan ipucu itibaren
0

, bu

b = struct('a',num2cell(a)); 
isteyebilirsiniz