2012-02-07 10 views
6

Aşağıdaki yapısal değerlerle başlatılmış bir hücre dizisi olduğunu varsayalım.Matlab: Nasıl yapılıyor? Hücre operatörü kullanarak yapıların hücre dizisini yapı dizisine nasıl dönüştürür?

% Phone book 
phone_record{1} = struct('name', 'Bob', 'phone', '1233323'); 
phone_record{2} = struct('name', 'Mike', 'phone', '3245524'); 

% How to make such or similar one-liner work? 
% phonebook(:) = phone_record{:} 

% Expected: 
% phonebook(1).name = 'Bob'; 
% phonebook(1).phone= '1233323'; 
% phonebook(2).name = 'Mike'; 
% phonebook(2).phone = '3245524'; 

cell2struct veya döngü için indeksleme kullanılarak w/o, bunu gerçekleştirmek için gerçekten mümkün mi? Bir anlaşması anlaşmasını kullanabilir mi?

Not: Eğer çözümü bilmiyorsanız, lütfen "en iyi uygulama" ipuçlarını veya benzer "el sallamasını" doldurun.

+0

Döngüler arası olmayan diziliş dizisini dizinin burada olduğu gibi çalıştığını lütfen unutmayın. Http://stackoverflow.com/questions/8372619/understanding-colon-notation-in-matlab –

+0

Bu, büyük olasılıkla, insanları denemek için zayıf biçim "En iyi uygulama" ipuçları veya benzer "el-sallayarak" için lütfen "yardım" için yardımcı olmak için. Condescension nadiren insanların size yardım etmeye çalışmak için zamanlarını ayırmaları için bir teşvik olarak kabul edilir. – Marc

+0

Eğer bu kaba görünüyorsa özür dilerim, ama bu teknik bir soru ve aldığım cevap çok önemlidir! Ne yazık ki, toplulukta gereksiz yorum yapmaktan hoşlanan üyeler var ;-) ya da "vay, ben olsam bunu yapmazdım" gibi ifadeler, "kullanım yerinin kullanılmasını düşün" ve benzeri benzeri olmayan saçmalıklar var. Teknik bir sorum var. Benim cevabım, cevabı bilmiyorsanız, sadece bir şey söyleyerek kendinizi kısıtlamayı ve bu bilgi tabanını bir çözüm arayışında okuyacak diğer kullanıcıların zamanını boşa harcamayı düşünün. –

cevap

7

Sen cell2mat kullanabilirsiniz:

cell2mat(phone_record) 

ans = alanlarla

1x2 yapı dizisi:

adı
telefon

+1

Teşekkürler - sadece ciddi miktarda iş kurtardınız. – Gdalya

+0

Bu da beni kurtardı, teşekkürler! –

1

O

phone_book = cat(2, phone_record{ :}) 

gerçekten iki nokta operatörünü kullanır ve cell2mat (phone_record) ile aynı sonucu verecektir.

olmayan başka bir kolon çözeltisi (eksik) alanları ekleyerek, örneğin anında yapılar transforme parası ile

cellfun(@(x) x, phone_record).' 

olup. Elbette, buradaki kimliği kullanırız.

İlgili konular