Matlab'da hızlı bir uygulama aramak için basit bir sorunum var. Ben değer dizisi var diyelim:İşlenenler || ve && operatörleri mantıksal skaler değerlere dönüştürülebilir olmalıdır.
a = floor(rand(5,5).*255)
Sonra benzer büyüklükteki eşik dizisi olan en çok diyelim: a
içinde değerleri için
a_thresh = floor(rand(5,5).*255)
onlar tekabül daha 0.5x daha küçükse
a(a < a_thresh.*0.4) = 0
a(a > a_thresh.*1.2) = 0
0:
yani, benzer 1.2x için
a_thresh
değeri de sıfıra ayarlanmalıdır -
a_thresh
değeri I çıkışı 0 olmak istiyorum
0,4x ve 0,5x ile 1,0x ve 1,2x arasındaki değerler için orantılı bir miktar istiyorum ve 0,5 ile 1,0 arasında değişmeden a
değerini değiştirmek istiyorum.
operandların || etmek: Ben diyor bir hata alıyorum, ancak
a(a>= a_thresh .* 0.4 && a <a_thresh.* 0.5) = ((a - a_thresh.*0.4)/(a_thresh.*0.5 a_thresh.*0.4)) .* a;
: Ben aşağıdaki gibi bir şey olur diye düşündüm ve & & işlemleri mantıksal sayısal alan dönüştürülebilen
bu çözmek için nasıl herhangi bir tavsiye değerleri olmalıdır? Açıkçası, bunu yapmak için döngüler kullanabilirdim ve önemsiz olurdu, ancak kodun vectorized olmasını istiyorum.
Fantastik - &/&& sorunu giderir - Bazıları bunu nasıl bilemedim, teşekkürler! Şimdi küçük bir sorun var, sağdaki elemanların sayısı soldan farklı. Bunu düzeltmenin akıllı bir yolu var mı? – trican
@trican Çalıştım, lütfen güncellemeye bakın. –
Çok, çok teşekkürler Eitan - çözümünüz mükemmel çalışıyor - ve açıkça Matlab işimde başka bir yerde nasıl kullanabileceğimi görebileceğim kadar genel – trican