Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen minccalc komutudur.
Program:
ADI
minccalc - minc dosyalarında karmaşık matematik işlemleri gerçekleştirin
SİNOPSİS
minkal [ ] .mnc [ .mnc...] .mnc
TANIM
Minccal bir veya daha fazla minc dosyasında karmaşık, voksel-voksel matematik işlemleri gerçekleştirir
aynı şekle sahip ve aynı koordinat örneklemesine sahip, tek bir çıktı dosyası üretiyor.
Gerçekleştirilecek işlemler, kullanılarak girilir. ifade argüman (bkz. İFADE).
Varsayılan olarak, çıktı dosyası, seçenek olmayan son bağımsız değişkendir. Ancak, eğer -outfile
seçenek kullanılırsa, seçenek olmayan tüm argümanlar girdi dosyaları olarak kabul edilir ve çıktı
dosya adları şuradan gelir: -outfile birden fazla olabilen seçenekler.
SEÇENEKLER
Seçeneklerin kısaltılmış biçimde (benzersiz oldukları sürece) belirtilebileceğini ve
komut satırında herhangi bir yerde verilebilir.
-2 MINC 2.0 formatında çıktı dosyaları oluşturun.
-Yardım Komut satırı seçeneklerinin özetini yazdırın ve çıkın.
-version
Programın sürüm numarasını yazdırın ve çıkın.
-kaba
Mevcut bir dosyanın üzerine yazın.
-noklobber
Mevcut bir dosyanın üzerine yazmayın (varsayılan).
-no_clobber
-noclobber'ın eş anlamlısı.
-ayrıntılı
Kopyalanan her veri parçası için ilerleme bilgilerini yazdırın (varsayılan).
-sessiz İlerleme bilgilerini yazdırmayın.
-hata ayıklama Hata ayıklama bilgilerini yazdırın.
-kopya_başlığı
Tüm başlık bilgilerini ilk giriş dosyasından kopyalayın (bir giriş için varsayılan
dosyası).
-nocopy_header
İlk girdi dosyasından tüm başlığı kopyalamayın; sadece koordinatı kopyala
bilgi (birden fazla giriş dosyası için varsayılan).
-dosya tipi
İlk giriş dosyasıyla (varsayılan) aynı türde bir çıktı dosyası oluşturun.
-bayt Çıkış voksellerini 8 bit tamsayı formatında saklayın.
-kısa Çıkış voksellerini 16 bit tamsayı formatında saklayın.
-t Çıkış voksellerini 32 bit tamsayı formatında saklayın.
-uzun Yerini alan -t.
yüzer Çıkış voksellerini 32 bit kayan nokta biçiminde saklayın.
-çift
Çıkış voksellerini 64 bit kayan nokta biçiminde saklayın.
-imzalı
İmzalı, ikinin tamamlayıcı tamsayı biçimini kullanın. Yalnızca çıkış voksel türü ise geçerlidir
bir tamsayı türü olarak belirtildi (bir -bayt, -kısa, -t or -uzun).
-imzasız
İşaretsiz tamsayı biçimini kullanın. Yalnızca çıkış voksel türü şu şekilde belirtilmişse geçerlidir:
bir tamsayı türü olmak (bir -bayt, -kısa, -t or -uzun).
-Aralık dk maksimum
Geçerli tamsayı verisi aralığını kısıtlayın. Yalnızca şu durumlarda geçerlidir: -bayt,
-kısa, -t or -uzun seçenekler belirtilir.
-max_buffer_size_in_kb boyut
Dahili arabelleklerin maksimum boyutunu belirtin (kbayt olarak). Varsayılan 4096
(4MB).
-Boyut kısa isim
Kümülatif bir işlem gerçekleştirmek istediğimiz bir boyut belirtin.
-check_dimensions
Tüm girdi dosyalarının dünya boyutlarında (varsayılan) eşleşen örneklemeye sahip olduğunu kontrol edin.
-nocheck_dimensions
Girdi dosyaları için dünya boyutları örneklemesindeki farklılıkları yok sayın.
-propagate_nan
Kümülatif vektör işlemleri için (toplam, dürtme ve ort), geçersiz veriler (Numara Değil
veya NaN), vektörün herhangi bir öğesinde, sonuçta geçersiz veriler üretecektir.
(varsayılan).
-ignore_nan
Kümülatif vektör işlemleri için vektördeki geçersiz veriler (NaN) yok sayılır, yani.
yokmuş gibi davranılır.
nan Bir vokselde geçersiz bir işlem yapılmaya çalışıldığında (sıfıra bölme gibi),
sonuç geçersiz veridir (NaN) (varsayılan). Bir kümülatif için geçerli girdi verisine sahip olmamak
işlemi aynı zamanda yasadışı bir işlem olarak kabul edilir. -ignore_nan kullanıldı.
-sıfır Bir vokselde geçersiz bir işlem yapılmaya çalışıldığında (sıfıra bölme gibi),
sonuç sıfır değeridir.
-illegal_değer değer
Bir vokselde geçersiz bir işlem yapılmaya çalışıldığında (sıfıra bölme gibi),
sonuç, bu seçenek tarafından belirtilen değerdir.
ifade dizi
Her vokselde değerlendirilecek ifadeyi belirtin (bkz. İFADELER).
-ifade dosyası Dosya
Her vokselde değerlendirilecek bir ifade içeren bir dosya belirtin (bkz.
İFADE). Dosya adı ``-'' verilirse, ifade stdin'den okunur.
Komut satırı ifadelerinden tek fark, yorumların
dosya. Bir yorum satırı, ilk olmayan olarak bir "#" yerleştirilerek belirtilir.
satırın boşluk karakteri. Minccalc komut dosyaları ayarlanarak oluşturulabilir.
ilk satır
#! /usr/yerel/mni/bin/minccalc -expfile
-outfile sembol çıktı dosyası
Çıktının belirtilen dosyaya yazılması gerektiğini, değerlerden değerler alarak belirtin.
ifadede oluşturulması gereken sembol (bkz. ÖRNEKLER Bölüm). Eğer
bu seçenek verilir, daha sonra seçenek olmayan tüm argümanlar girdi dosyaları olarak alınır. Bu
seçeneği, birden çok çıktı dosyası için birden çok kez kullanılabilir.
-eval_width değer
Paralel olarak işlenecek voksel sayısını belirtin. Varsayılan 200'dür.
İFADE
The ifade argüman, değerlendirilecek işlevi tanımlayan tek bir dizedir. NS
fonksiyon ifadesi tipik olarak A vektörü cinsinden yazılır.
Örneğin, aşağıdaki ifade ilk iki girdi dosyasını birlikte toplayacaktır:
A[0] + A[1]
Noktalı virgülle ayrılmış birden çok ifade verilebilir, bu durumda yalnızca değeri
son ifade kullanılır. Bu ifade listeleri atama ile kullanılabilir.
sözdizimini çok C benzeri yapmak için ifadeler:
oran = A[0]/A[1]; A[2]*exp(-oran)
Kıvrımlı parantez içindeki bir ifade listesi, geçerli bir ifadedir ve sonuncunun değerini döndürür.
Listedeki ifade. Bu özellikle yararlıdır için ve if ifadeler (aşağıya bakınız).
Dilde iki tür değer vardır: vektörler ve skalerler. Skaler değişmezleri
kayan noktalı sayılar veya adı küçük harfle başlayan semboller olarak görünebilir.
+, -, * ve / gibi normal skaler operatörlerin yanı sıra ifade dili de
infix üs alma operatörünü ^ destekler, olağan ilişkisel operatörler <, <=, >,
>=, ==, != ve ayrıca && (ve) boole operatörleri || (veya) ve ! (Olumsuz). Şuna dikkat edin:
&& ve || Boole operatörleri, C'nin aksine her zaman her iki işleneni de değerlendirir. Skaler matematiksel
işlevler şunları içerir abs, sqrt, exp, log, günah, araba, bronzlaşmak, de olduğu gibi, akos ve atan. Ayrıca orada
bazı özel işlevler:
isnan(v) - v geçersizse 1, aksi takdirde 0
kelepçe(v1,v2,v3) - v1, [v2, v3] ile sınırlanır
segment(v1,v2,v3) - v1'in [v2, v3] içinde olup olmadığını test eder
NaN skaler sabiti, isnan(NaN) dönüşü 1 olacak şekilde tanımlanır.
Vektörler aşağıdaki 'uzantısal' biçimde yazılabilir
[ değer1, değer2, ... ]
veya aşağıdaki aralık oluşturan gösterimleri kullanarak:
[ a : b ] {a, a+1, ..., b-1, b} üretir
[ a : b ) {a, a+1, ..., b-1} üretir
( a : b ] {a+1, ..., b-1, b} üretir
( a : b ) {a+1, ..., b-1} üretir
veya 'niyet' tarafından oluşturulabilir. Aşağıdaki yoğunluk ifadesi vektörü oluşturur.
{3,2,1}:
{ ben [1:3] | 4 - ben }
Vektörler, adları büyük harfle başlayan semboller olarak da görünebilir.
Skaler operatörlere ek olarak, aşağıdaki vektör operatörleri sağlanır:
avg - vektördeki skalerlerin ortalama değeri
len - uzunluğu
sum - öğelerinin toplamı
ürün - elemanlarının ürünü
max - maksimum değeri
min - minimum değeri
imax - maksimum değerin indeksi
imin - minimum değerinin indeksi
V[s] - 0 orijinli V vektörünün s'inci elemanı.
Sembol adları, genel bir sembol tablosuna, sembollerin atama ifadeleriyle tanıtılır.
Airdrop Formu
bir = A[2] * log(2)
Küçük harfle başlayan semboller skaleri, ile başlayan semboller skaleri temsil eder.
büyük harf vektörleri temsil eder. = bir operatör olduğundan, sonucu bir
ifade (C'deki gibi).
Birkaç kontrol yapısı sağlanmıştır:
For döngüleri, bir vektör üzerinde döngü oluşturmak için oluşturulabilir, her değeri bir sembole atayabilir ve ardından
bir ifadenin değerlendirilmesi. Bu, formun ifadeleriyle yapılır
toplam=0; for{i in [0:len(A))} toplam=toplam+A[i]; Toplam
bu, (A) toplamına eşdeğerdir. Bunun kullanmaya benzer olduğunu unutmayın.
toplam=0; len{i [0:len(A)) içinde | toplam=toplam+A[i]}; Toplam
yana için yapı aslında bir operatördür (genellikle yalnızca
değişen sembol değerleri). Ayrıca, son "toplam" olmadan ifadenin
sadece vektörün uzunluğunu döndüreceğinden çok kullanışlı olmaz.
C'de olduğu gibi, kıvrımlarda bir ifade listesi belirtilebilir:
toplam=toplam2 = 0;
{i in [0:len(A))} için {
toplam = toplam + A[i];
toplam2 = toplam2 + A[i]^2
}
Ayrıca birkaç formu vardır if-then-else inşa:
bir[0]<0 ? 0 : A[0]
if (A[0]<0) sonuç=0 else sonuç=A[0]
The başka İsteğe bağlı. Yine, if yapısı bir operatördür ve sonra or başka
ifadeler, kıvrımlı ifade listeleri olabilir, bu durumda son ifadenin değeri
ifadesi döndürülür. Eğer başka ifade eksik, ardından 0 değeri döndürülür
test ifadesi 0 (yanlış) olduğunda.
En önemli tuhaflık için ve if yapılar, C deyimlerinden farklı olarak,
içindeki bir ifade listesi olsa bile bir sonraki ifadeden noktalı virgülle ayrılmalıdır.
curlies kullanılır:
i için [0:len(A)) {toplam=toplam+A[i]} ; toplam/len(A)
if (A[i]>0) {sonuç=2;} else {sonuç=1} ; sonuç*5
Sembol adlarını tanıtmanın alternatif bir yolu, izin-ifade. Örneğin,
aşağıdaki ifade her zaman 3 olarak değerlendirilir:
a + b'de a = 1, b = 2 olsun
Bunlar başlangıçta yalnızca değerlendirilen ifade içinde değişkenler oluşturmak için tasarlandı,
ancak global sembol tablosunun değişmesi için değişiklikler yapılmıştır.
ÖRNEKLER
Aşağıdakileri dikkate alarak standart sapmayı hesaplamak için bir ifade:
yoksayılan geçersiz giriş verileri olasılığı:
s0 = s1 = s2 = 0;
için { i in [0:len(A)) } {
v=A[i];
eğer (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
if (s0 > 1) {
sqrt((s2 - s1*s1/s0) / (s0-1));
}
else {
NaN;
};
Son if, s0 > 0 ancak <= 0 ise 1 döndürecek şekilde değiştirilebilir. Ayrıca kıvrımı da bırakırız.
parantezler, ancak o zaman bir ";" olmamalıdır. if ve else arasında
(s0 > 1) ise
sqrt((s2 - s1*s1/s0) / (s0-1))
başka ise (s0 > 0)
0
başka
NaN
Hem ortalamayı hem de standart sapmayı istiyorsak, -outfile seçeneği
komutu ile çağırmak
minccalc -expfile stdev \
-outfile ortalama ortalama.mnc \
-outfile stdev stdev.mnc \
dosya1.mnc dosya2.mnc ...
Ve ifade dosyasını kullanarak (yine başka bir if ifadesi biçimiyle):
s0 = s1 = s2 = 0;
{i in [0:len(A))} için {
v=A[i];
eğer (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
standart = (s0 > 1) ? sqrt((s2 - s1*s1/s0) / (s0-1)) :
(s0 > 0) ? 0 : NaN ;
ortalama = (s0 > 0) ? s1/s0: NaN;
UYARILAR
Hatırlamanız gereken birkaç şey...
Vektör değişkenleri büyük harfle başlamalıdır.
Vektör değişken isimleri, fonksiyon anahtar kelimelerinden biri olmamalıdır,
toplam, len, ürün, ... vb
For döngüleri ve if ifadelerinin her zaman bir sonraki ifadeden bir
noktalı virgül.
Sembol tablosu küreseldir.
Boole operatörleri && ve || her zaman her iki işleneni de değerlendirin.
Paralellik üzerine bir not: Verimlilik nedenleriyle, birçok voksel üzerinde aynı anda değerlendirmeler yapılır.
(voksel sayısı, değerlendirmenin genişliği olarak anılır ve ile değiştirilir
the -eval_width seçenek). Bunun garip bir sonucu, if-else'nin her iki tarafının da
ifadesi her zaman değerlendirilir (tüm vokseller aynı test sonucunu vermedikçe), ancak
her sonuç içindeki ifadeler yalnızca uygun voksellerde değerlendirilir. İçinde
özellikle, sembol tablosundaki girişler sadece bir voksel maskesine göre değiştirilir. A
bunun yan etkisi, bir if-else sonucunda ayarlanan herhangi bir vektör sembolünün değişmemesi gerektiğidir.
sembolün uzunluğu (onu yaratabilmesine rağmen) ve sonucun her iki tarafı da
her ikisinin de değiştirdiği herhangi bir vektör sembolünün uzunluğu üzerinde anlaşın. Bu net değilse,
sadece deneyin - memnun değilse program şikayet edecektir.
onworks.net hizmetlerini kullanarak minccalc'ı çevrimiçi kullanın