SORU
28 AĞUSTOS 2010, CUMARTESİ


MATLAB Hash tabloları

MATLAB karma tablo için herhangi bir destek var mı?


Bazı arka plan

Görüntünün ölçek-uzayı gösterimi gerektiren bir Matlab bir sorun üzerinde çalışıyorum. Bunu yapmak için ben 2 boyutlu varyans Gaussian filtre bazı dizi k *9.* oluşturmak, sonra sıra ile her bir görüntü filtrelemek için kullanıyorum. Şimdi, filtre görüntü için k eşleme çeşit istiyorum.

Eğer k her zaman bir tam sayı olsaydı, sadece 3 boyutlu bir dizi gibi oluşturmak istiyorum:

arr[k] = <image filtered with k-th guassian>

Ancak, k mutlaka bir tam sayı değil, bu yüzden bunu yapamam. Yapmayı düşündüğüm ks dizisi gibi tutuyordu:

arr[find(array_of_ks_ = k)] = <image filtered with k-th guassian>

Çok iyi ilk başta görünüyor k 20 veya 30 değerleri ile potansiyel olarak birkaç bin kere ve bu performans zarar verecek diye korkuyorum bu arama yapacağım dışında düşündüm.

Eğer O(1) yerine O arama zamanı(n) var ki bir çeşit karma bir tablo ile bu işi daha iyi hizmet etmiş olurdum diye merak ediyorum.


Şimdi, biliyorum bunu yapmamalıyım optimize zamanından önce ve olmayabilirim var bu sorun, ama unutmayın, bu sadece arka planı ve bazı durumlarda bu gerçekten en iyi çözüm ne olursa olsun, ister en iyi çözüm içinbenimsorun.

CEVAP
28 AĞUSTOS 2010, CUMARTESİ


Düşünün C = göster sınıfı kullanarak: containers.Map. Burada kısa bir genel bakış:

  • Oluşturma:

    >> keys = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...
      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Annual'};
    
    >> values = {327.2, 368.2, 197.6, 178.4, 100.0,  69.9, ...
      32.3,  37.3,  19.0,  37.0,  73.2, 110.9, 1551.0};
    
    >> rainfallMap = containers.Map(keys, values)
    
    rainfallMap = 
      containers.Map handle
      Package: containers
    
      Properties:
            Count: 13
          KeyType: 'char'
        ValueType: 'double'
      Methods, Events, Superclasses
    
  • Arama:

    x = rainfallMap('Jan');
    
  • Ata:

    rainfallMap('Jan') = 0;
    
  • Ekleyin:

    rainfallMap('Total') = 999;
    
  • Kaldırın:

    rainfallMap.remove('Total')
    
  • İnceleyin:

    values = rainfallMap.values;
    keys = rainfallMap.keys;
    sz = rainfallMap.size;
    
  • Kontrol tuşu:

    if rainfallMap.isKey('Today')
        ...
    end
    

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eurotuner

    eurotuner

    6 Mart 2006
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • TheTwistedFrequency

    TheTwistedFr

    26 NİSAN 2010