2016-03-27 19 views
1

Matlab'da daha sonra LabVIEW'in Mathscript düğümünde desteklenen bir 3D dizi veya matris oluşturmam gerekiyor. 3D dizisindeki tüm değerler 0 olarak başlatılmalı ve 3 boyuttaki boyutlar farklı önceden hesaplanmış değişkenlerdir.3 argüman zeros işlevi desteklenmeden Matlab'da 3B matris oluşturma desteği

Aşağıdakileri denedim: Matlab için gayet iyi çalışan X = zeros(a,b,c);, ancak LabVIEW uygulamasında sıfırlar işlevi yalnızca 1 veya 2 bağımsız değişkeni desteklemektedir.

for i = 1 to c 
    X(:,:,i) = zeros(a,b); 
end 

Bununla birlikte, ne de dizi indeksleme desteği 3 indeksleri:

Sonra döngü için ile oluşturarak çalıştı.

"You can specify only one or two index arguments, such as a(1, 2)."

nasıl sıfır 3 argümanlarla çalışması ve 3 argümanlarla dizi indeksleme ne kullanmayan bir 3D dizi oluşturmak için herhangi bir fikir var mı: hatası alıyorum?

cevap

1

bir hızlı arama çevrimiçi, ben this page LabVIEW MathScript içinde data types desteklenen tasvir eden bulundu:

Scalars and One- and Two-Dimensional Arrays

  • Single-precision, floating-point numeric
  • Double-precision, floating-point numeric
  • Extended-precision, floating-point numeric
  • Complex single-precision, floating-point numeric
  • Complex double-precision, floating-point numeric
  • Complex extended-precision, floating-point numeric
  • 8-bit signed integer numeric
  • 16-bit signed integer numeric
  • 32-bit signed integer numeric
  • 64-bit signed integer numeric
  • 8-bit unsigned integer numeric
  • 16-bit unsigned integer numeric 32-bit unsigned integer numeric
  • 64-bit unsigned integer numeric
  • Boolean
  • Structure

Yani 3D diziler (veya üstü kararır) desteklenmez anlaşılmaktadır.

Ayrıca, zeros işlev belgelerini kontrol ederek da onaylayabilirsiniz.

+0

Şu an bu benim için büyük bir problem. Desteklenmediklerini bile düşünmediler. Bir şekilde 3D dizileri “simüle” edebilecek bir çözüm hakkında herhangi bir fikriniz var mı? Bu yapı olmadan tüm algoritmam öldürüldü. – rafanadal

+1

@rafanadal Emin değilim, uygulamanıza bağlıdır. Belki üçüncü boyutu düzleştirebilir ve yatay olarak 2B matris olarak yapıştırabilirsiniz. Yani 'arr3d = zeros (m, n, p)' yi oluşturmak yerine 'arr2d = zeros (m, n * p)' yi yaratırsınız. Tabii ki bu diziye tüm indekslemeyi ayarlamanız gerekecek, bu yüzden 'arr3d (:,:, i)' ye erişmeniz gerektiğinde 2d matrisini arr2d (:, (i-1) * n + 1: i * n) ' – Amro

+0

Bu iyi bir fikir. Bunu sevdim. Tüm hücrelerdeki veriler bağımsız olduğundan ve 3 boyut sadece doğru indeksleme için kullanıldıkça düzleştirme işe yarayacak, sadece indekslemeyi bozmamaya dikkat etmeliyim. Teşekkürler! – rafanadal