SORU
2 EYLÜL 2010, PERŞEMBE


Nasıl hesapların yapılabilmesi dizi ilk yerel bir değişkene atamadan, bir işlev tarafından döndürülen dizin bulabilirim?

Eğer magic(5), orta değer okumak istiyorum örneğin, bu gibi yapabilirim:

M = magic(5);
value = M(3,3);

value == 13 olsun. Bunlardan biri gibi bir şey yapmak istiyorum:

value = magic(5)(3,3);
value = (magic(5))(3,3);

Ara değişken ile dağıtmak için. Ancak kapsamlı bir 3 önce parantez Unbalanced or unexpected parenthesis or bracket şikayet.

İlk bir değişkene atamadan bir dizi/matris değerleri okumak mümkün mü?

CEVAP
2 EYLÜL 2010, PERŞEMBE


Aslındane istediğinizi, ama eğer indeksleme operatörü fonksiyonel formu kullanırsanız sadece yapmak mümkün. Dizin oluşturma işlemi () kullanarak gerçekleştirdiğinizde aslında SUBSREF işlevine bir çağrı yapıyoruz. Bu yüzden, rağmenolamazbunu yapmak için:

value = magic(5)(3,3);

Sanaolabilirbunu yapmak için:

value = subsref(magic(5),struct('type','()','subs',{{3,3}}));

Çirkin, ama mümkün ;)

Genel olarak, hemen birbiri ardından parantez iki takım yok bu yüzden bir işlev çağrısı için dizin oluşturma adımı değiştirmek zorunda. Bunu yapmanın başka bir yolu alt dizin oluşturma yapmak için kendi anonim fonksiyon tanımlamak için:

subindex = @(A,r,c) A(r,c);      %# An anonymous function to index a matrix
value = subindex(magic(5),3,3);  %# Use the function to index the matrix

Tüm söyledi ve yapıldığında, ancak, geçici yerel değişken çözümdürçokkesinlikle önerim daha okunabilir, ve.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009