2016-04-11 12 views
1

bir 2-D dizisinde ilk sıfır olmayan öğenin dizinini bulmak Ben find(u1, 1) kullanmak gibi, Simulink 2-D dizisindeki ilk sıfır olmayan elemanın dizinini bulmak istiyorum MATLAB'ta komut.Simulink

Örneğin, MATLAB'da yapardım:

u1 = [46.15 61.21; 22.5 45.3; -1 -1; -1 -1; -1 -1]; 

idx= find(u1<0, 1) % The answer would be: idx = 3 
+1

"Bul" bloğunu mu denediniz? – Daniel

+0

Sorunu iyi anladığımdan emin değilim. Bir 2B vektörünüz (bir matris) var ve sıfır olmayan veya sıfırdan daha az olan birinci elemanın ij öğesi indisini bulmak mı istiyorsunuz? 2D vektörü nasıl okumak istersiniz? Böyle bir matrisiniz varsa: [1 2 3; -1 -3 4] İlk 'sıfırdan az' öğesi -1'e eşit olan eleman (2,1) olacaktır. İlk sıfır olmayan eleman (1,1) 1'e eşittir. Kendinizi daha iyi açıklayabilir misiniz? Fab. – kalmanIsAGameChanger

cevap

0

girdiniz mantıksal vektör olmalıdır böylece

blocks

gibi Find ve MinMax blok kullanabilirsiniz. Bunu elde etmek için önceki hesaplamalar kullanılabilir.

Örneğinizde, < koşulunu test etmek için Relational Operator bloğunu kullanmak ve yukarıdaki girişin yerine çıkışı kullanmak isteyebilirsiniz.

Find bloğu, sıfır olmayan öğelerin tüm dizinlerini döndürür. En küçük endeksi almak için MinMax bloğu (en düşük değeri alacak şekilde) kullanılabilir.


Sen Find kullanmadan önce herhangi bir değer doğru olup olmadığını test etmek için, OR ayarlanmış bir Logical Operator blok, kullanmak isteyebilir. Hiçbir değer true değilse, Find, MinMax bloğuna girerken hata verecek boş bir dizi döndürür. Bu, kontrol akışı için documentation'da gösterildiği gibi If/Else If mantığı kullanılarak önlenebilir.