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

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010
  • WK

    WK

    9 Ocak 2006