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

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • Britec09

    Britec09

    4 Mart 2009
  • USI Events

    USI Events

    6 AĞUSTOS 2013