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

  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011
  • The Platform

    The Platform

    14 HAZİRAN 2006
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009