ນີ້ແມ່ນຄໍາສັ່ງ minccalc ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນສະຖານີເຮັດວຽກອອນໄລນ໌ຟຣີຫຼາຍອັນຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
minccalc - ປະຕິບັດການປະຕິບັດຄະນິດສາດທີ່ສັບສົນໃນໄຟລ໌ minc
ສະຫຼຸບສັງລວມ
mincalc [ ] .mnc [ .mnc...] .mnc
ລາຍລະອຽດ
Minccalc ຈະປະຕິບັດການດຳເນີນຄະນິດສາດທີ່ສັບສົນ, voxel-by-voxel, ໃນໜຶ່ງ ຫຼືຫຼາຍໄຟລ໌ minc
ຮູບຮ່າງດຽວກັນ ແລະມີການເກັບຕົວຢ່າງປະສານງານດຽວກັນ, ການຜະລິດໄຟລ໌ຜົນຜະລິດອັນດຽວ.
ການດໍາເນີນງານທີ່ຈະປະຕິບັດແມ່ນການປ້ອນຂໍ້ມູນໂດຍນໍາໃຊ້ - ການສະແດງອອກ ການໂຕ້ຖຽງ (ເບິ່ງ ການສະແດງອອກ).
ໂດຍຄ່າເລີ່ມຕົ້ນ, ໄຟລ໌ຜົນຜະລິດແມ່ນການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນທາງເລືອກສຸດທ້າຍ. ຢ່າງໃດກໍຕາມ, ຖ້າຫາກວ່າ -outfile
ທາງເລືອກແມ່ນໄດ້ຖືກນໍາໃຊ້, ຫຼັງຈາກນັ້ນການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນທາງເລືອກທັງຫມົດແມ່ນພິຈາລະນາໄຟລ໌ເຂົ້າແລະຜົນຜະລິດໄດ້
ຊື່ໄຟລ໌ມາຈາກ -outfile ທາງເລືອກ, ຊຶ່ງສາມາດມີຫຼາຍກ່ວາຫນຶ່ງ.
OPTIONS
ໃຫ້ສັງເກດວ່າທາງເລືອກສາມາດຖືກກໍານົດໃນຮູບແບບຫຍໍ້ (ຕາບໃດທີ່ພວກມັນເປັນເອກະລັກ) ແລະ
ສາມາດໄດ້ຮັບການມອບໃຫ້ທຸກບ່ອນໃນເສັ້ນຄໍາສັ່ງ.
-2 ສ້າງໄຟລ໌ຜົນຜະລິດຮູບແບບ MINC 2.0.
-ຊ່ວຍ ພິມບົດສະຫຼຸບຂອງຕົວເລືອກແຖວຄໍາສັ່ງແລະອອກ.
-ການປ່ຽນແປງ
ພິມໝາຍເລກເວີຊັນຂອງໂປຣແກຣມ ແລະອອກ.
-clobber
ຂຽນທັບໄຟລ໌ທີ່ມີຢູ່ແລ້ວ.
-noclobber
ຢ່າຂຽນທັບໄຟລ໌ທີ່ມີຢູ່ແລ້ວ (ຄ່າເລີ່ມຕົ້ນ).
-no_clobber
ຄໍາສັບຄ້າຍຄື -noclobber.
- ກະດູກ
ພິມຂໍ້ມູນຄວາມຄືບໜ້າຂອງຂໍ້ມູນແຕ່ລະອັນທີ່ສຳເນົາໄວ້ (ຄ່າເລີ່ມຕົ້ນ).
- ງຽບ ຢ່າພິມຂໍ້ມູນຄວາມຄືບໜ້າອອກ.
-ແມງໄມ້ ພິມຂໍ້ມູນການດີບັກອອກ.
-copy_header
ສຳເນົາຂໍ້ມູນສ່ວນຫົວທັງໝົດຈາກໄຟລ໌ປ້ອນຂໍ້ມູນທຳອິດ (ຄ່າເລີ່ມຕົ້ນສຳລັບການປ້ອນຂໍ້ມູນອັນດຽວ
ໄຟລ).
-nocopy_header
ຫ້າມຄັດລອກສ່ວນຫົວທັງໝົດຈາກໄຟລ໌ປ້ອນຂໍ້ມູນທຳອິດ; ສໍາເນົາພຽງແຕ່ປະສານງານ
ຂໍ້ມູນ (ຄ່າເລີ່ມຕົ້ນສໍາລັບຫຼາຍກວ່າຫນຶ່ງໄຟລ໌ທີ່ປ້ອນເຂົ້າ).
- ປະເພດໄຟລ໌
ສ້າງໄຟລ໌ຜົນຜະລິດທີ່ມີປະເພດດຽວກັນກັບໄຟລ໌ປ້ອນຂໍ້ມູນທໍາອິດ (ຄ່າເລີ່ມຕົ້ນ).
-byte ເກັບຮັກສາ voxels ຜົນຜະລິດໃນຮູບແບບຈໍານວນ 8-bit.
- ສັ້ນ ເກັບຮັກສາ voxels ຜົນຜະລິດໃນຮູບແບບຈໍານວນ 16-bit.
-int ເກັບຮັກສາ voxels ຜົນຜະລິດໃນຮູບແບບຈໍານວນ 32-bit.
-ຍາວ ແທນທີ່ໂດຍ -int.
- ລອຍ ເກັບຮັກສາ voxels ຜົນຜະລິດໃນຮູບແບບ 32-bit floating point.
- ສອງເທົ່າ
ເກັບຮັກສາ voxels ຜົນຜະລິດໃນຮູບແບບ 64-bit floating point.
- ເຊັນ
ໃຊ້ການລົງລາຍເຊັນ, ຮູບແບບຈຳນວນເຕັມທີ່ສົມບູນຂອງສອງ. ນຳໃຊ້ພຽງແຕ່ຖ້າປະເພດ voxel ຜົນຜະລິດ
ຖືກກໍານົດໃຫ້ເປັນປະເພດຈໍານວນເຕັມ (ຫນຶ່ງໃນ -byte, - ສັ້ນ, -int or -ຍາວ).
- ບໍ່ໄດ້ເຊັນ
ໃຊ້ຮູບແບບຈຳນວນເຕັມທີ່ບໍ່ໄດ້ເຊັນ. ນຳໃຊ້ພຽງແຕ່ຖ້າປະເພດ voxel ຜົນຜະລິດຖືກລະບຸໃສ່
ເປັນປະເພດຈໍານວນເຕັມ (ຫນຶ່ງໃນ -byte, - ສັ້ນ, -int or -ຍາວ).
- ຈັດແຈງ ນາທີ ສູງສຸດທີ່ເຄຍ
ຈຳກັດຂອບເຂດທີ່ຖືກຕ້ອງຂອງຂໍ້ມູນຈຳນວນເຕັມ. ນຳໃຊ້ພຽງແຕ່ຖ້າໜຶ່ງໃນ -byte,
- ສັ້ນ, -int or -ຍາວ ທາງເລືອກແມ່ນໄດ້ລະບຸໄວ້.
-max_buffer_size_in_kb ຂະຫນາດ
ລະບຸຂະຫນາດສູງສຸດຂອງ buffers ພາຍໃນ (ໃນ kbytes). ຄ່າເລີ່ມຕົ້ນແມ່ນ 4096
(4 MB).
-dimension ຊື່ຫຍໍ້
ລະບຸມິຕິຕາມທີ່ພວກເຮົາຕ້ອງການປະຕິບັດການສະສົມ.
-check_dimensions
ກວດເບິ່ງວ່າໄຟລ໌ປ້ອນຂໍ້ມູນທັງໝົດມີຕົວຢ່າງທີ່ກົງກັນຢູ່ໃນຂະໜາດໂລກ (ຄ່າເລີ່ມຕົ້ນ).
-nocheck_dimensions
ບໍ່ສົນໃຈຄວາມແຕກຕ່າງໃດໆໃນການເກັບຕົວຢ່າງຂະໜາດໂລກສຳລັບໄຟລ໌ປ້ອນຂໍ້ມູນ.
-propagate_nan
ສໍາລັບການປະຕິບັດ vector ສະສົມ (sum, ຜະລິດຕະພັນ ແລະ ສະເລ່ຍ), ຂໍ້ມູນບໍ່ຖືກຕ້ອງ (Not-A-Number
ຫຼື NaN) ໃນອົງປະກອບຂອງ vector ຈະຜະລິດຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງໃນຜົນໄດ້ຮັບ
(ເລີ່ມຕົ້ນ).
-ignore_nan
ສໍາລັບການປະຕິບັດ vector ສະສົມ, ຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ (NaN) ໃນ vector ແມ່ນຖືກລະເລີຍ, ie.
ຮັບການປິ່ນປົວຄືກັບວ່າມັນບໍ່ແມ່ນປະຈຸບັນ.
-ນານ ໃນເວລາທີ່ການດໍາເນີນງານທີ່ຜິດກົດຫມາຍແມ່ນພະຍາຍາມຢູ່ໃນ voxel (ເຊັ່ນ: ແບ່ງດ້ວຍສູນ), the
ຜົນໄດ້ຮັບແມ່ນຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ (NaN) (ຄ່າເລີ່ມຕົ້ນ). ບໍ່ມີຂໍ້ມູນການປ້ອນຂໍ້ມູນທີ່ຖືກຕ້ອງສໍາລັບການສະສົມ
ການດໍາເນີນງານຍັງຖືວ່າເປັນການດໍາເນີນງານທີ່ຜິດກົດຫມາຍໃນເວລາທີ່ -ignore_nan ຖືກນໍາໃຊ້.
-ສູນ ໃນເວລາທີ່ການດໍາເນີນງານທີ່ຜິດກົດຫມາຍແມ່ນພະຍາຍາມຢູ່ໃນ voxel (ເຊັ່ນ: ແບ່ງດ້ວຍສູນ), the
ຜົນໄດ້ຮັບແມ່ນຄ່າສູນ.
-illegal_value ມູນຄ່າ
ໃນເວລາທີ່ການດໍາເນີນງານທີ່ຜິດກົດຫມາຍແມ່ນພະຍາຍາມຢູ່ໃນ voxel (ເຊັ່ນ: ແບ່ງດ້ວຍສູນ), the
ຜົນໄດ້ຮັບແມ່ນຄ່າທີ່ລະບຸໄວ້ໂດຍທາງເລືອກນີ້.
- ການສະແດງອອກ string
ລະບຸການສະແດງອອກເພື່ອປະເມີນໃນແຕ່ລະ voxel (ເບິ່ງ EXPRESSIONS).
-expfile ຊື່ເອກະສານ
ລະບຸໄຟລ໌ທີ່ມີການສະແດງຜົນເພື່ອປະເມີນໃນແຕ່ລະ voxel (ເບິ່ງ
ສະແດງອອກ). ຖ້າຊື່ໄຟລ໌ ``-'' ຖືກໃຫ້, ຫຼັງຈາກນັ້ນການສະແດງອອກແມ່ນອ່ານຈາກ stdin.
ຄວາມແຕກຕ່າງພຽງແຕ່ຈາກການສະແດງອອກໃນແຖວຄໍາສັ່ງແມ່ນວ່າຄໍາຄິດຄໍາເຫັນສາມາດໃສ່ໄດ້
ໄຟລ໌. ແຖວຄຳຄິດເຫັນຖືກລະບຸໂດຍການວາງ ``#'' ເປັນອັນທຳອິດທີ່ບໍ່ແມ່ນ.
ລັກສະນະຊ່ອງຫວ່າງຂອງແຖວ. script Minccalc ສາມາດຖືກສ້າງຂື້ນໂດຍການຕັ້ງຄ່າ
ແຖວທໍາອິດກັບ
#! /usr/local/mni/bin/minccalc -expfile
-outfile ສັນຍາລັກ output-file
ລະບຸວ່າຜົນຜະລິດຄວນຈະຖືກຂຽນໃສ່ໄຟລ໌ທີ່ລະບຸ, ເອົາຄ່າຈາກ
ສັນຍາລັກທີ່ຄວນຈະໄດ້ຮັບການສ້າງຕັ້ງຂື້ນໃນການສະແດງອອກ (ເບິ່ງ ຕົວຢ່າງ ພາກ). ຖ້າ
ຕົວເລືອກນີ້ຖືກມອບໃຫ້, ຫຼັງຈາກນັ້ນ arguments ທີ່ບໍ່ແມ່ນທາງເລືອກທັງຫມົດຈະຖືກເອົາເປັນໄຟລ໌ປ້ອນຂໍ້ມູນ. ນີ້
ທາງເລືອກສາມາດນໍາໃຊ້ຫຼາຍຄັ້ງສໍາລັບໄຟລ໌ຜົນຜະລິດຫຼາຍ.
-eval_width ມູນຄ່າ
ລະບຸຈໍານວນຂອງ voxels ທີ່ຈະປະມວນຜົນໃນຂະຫນານ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 200.
ການສະແດງອອກ
ໄດ້ - ການສະແດງອອກ argument ເປັນສະຕຣິງດຽວທີ່ອະທິບາຍຟັງຊັນເພື່ອປະເມີນ. ໄດ້
ການສະແດງອອກຂອງຟັງຊັນໂດຍທົ່ວໄປແມ່ນຂຽນໃນແງ່ຂອງ vector A.
ຕົວຢ່າງ, ການສະແດງອອກຕໍ່ໄປນີ້ຈະລວມເອົາສອງໄຟລ໌ທໍາອິດເຂົ້າກັນ:
A[0] + A[1]
ການສະແດງອອກຫຼາຍສາມາດຖືກແຍກອອກດ້ວຍເຄື່ອງໝາຍຈຸດ, ໃນກໍລະນີນີ້ພຽງແຕ່ຄ່າຂອງ
ການສະແດງອອກສຸດທ້າຍແມ່ນໃຊ້. ລາຍຊື່ການສະແດງອອກເຫຼົ່ານີ້ສາມາດຖືກນໍາໃຊ້ກັບການມອບຫມາຍ
ການສະແດງອອກເພື່ອເຮັດໃຫ້ syntax ຄ້າຍຄື C:
ອັດຕາສ່ວນ = A[0]/A[1]; A[2]*exp(-ອັດຕາສ່ວນ)
ບັນຊີລາຍຊື່ການສະແດງອອກໃນວົງເລັບ curly ແມ່ນສະແດງອອກທີ່ຖືກຕ້ອງແລະສົ່ງຄືນຄ່າຂອງສຸດທ້າຍ
ການສະແດງອອກໃນບັນຊີລາຍຊື່. ນີ້ແມ່ນເປັນປະໂຫຍດໂດຍສະເພາະໃນ ສໍາລັບການ ແລະ if ການສະແດງອອກ (ເບິ່ງຂ້າງລຸ່ມນີ້).
ມີສອງປະເພດຂອງຄ່າໃນພາສາ: vectors ແລະ scalar. Scalars literals ແມ່ນ
ຕົວເລກຈຸດລອຍ ຫຼືອາດຈະປະກົດເປັນສັນຍາລັກທີ່ຊື່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມນ້ອຍ.
ນອກຈາກຕົວປະຕິບັດການສະເກັດເງິນປົກກະຕິເຊັ່ນ: +, -, * ແລະ /, ພາສາສະແດງອອກຍັງ
ສະຫນັບສະຫນູນ infix exponention operator ^ , ຕົວປະຕິບັດການພົວພັນປົກກະຕິ <, <=, >,
>=, ==, != ເຊັ່ນດຽວກັນກັບຕົວປະຕິບັດການ boolean && (ແລະ), || (ຫຼື) ແລະ ! (ບໍ່). ໃຫ້ສັງເກດວ່າ
&& ແລະ || ຕົວປະຕິບັດການ boolean ສະເຫມີປະເມີນທັງສອງ operand, ບໍ່ເຫມືອນກັບ C. Scalar ຄະນິດສາດ
ຫນ້າທີ່ປະກອບມີ abs, sqrt, exp, log, sin, cos, tan, ອາຊິນ, acos ແລະ atan. ຍັງມີອີກ
ບາງຫນ້າທີ່ພິເສດ:
isnan(v) - 1 ຖ້າ v ບໍ່ຖືກຕ້ອງ ແລະ 0 ຖ້າບໍ່ດັ່ງນັ້ນ
clamp(v1,v2,v3) - v1 ຜູກມັດດ້ວຍ [v2, v3]
segment(v1,v2,v3) - ການທົດສອບຖ້າ v1 ຢູ່ໃນ [v2, v3]
ສະຖິຕິຄົງທີ່ NaN ຖືກກຳນົດໄວ້ເຊັ່ນວ່າ isnan(NaN) return 1.
ສາມາດຂຽນ vectors ໃນຮູບແບບ 'ການຂະຫຍາຍ' ຕໍ່ໄປນີ້
[ຄ່າ 1, ຄ່າ 2, ... ]
ຫຼືໂດຍການໃຊ້ notations ການສ້າງຂອບເຂດຕໍ່ໄປນີ້:
[ a : b ] ສ້າງ {a, a+1, ..., b-1, b}
[ a : b ) ສ້າງ {a, a+1, ..., b-1}
( a : b ] ສ້າງ {a+1, ..., b-1, b}
( a : b ) ສ້າງ {a+1, ..., b-1}
ຫຼືຖືກສ້າງຂື້ນໂດຍ 'ຄວາມເຄັ່ງຕຶງ'. ການສະແດງອອກຄວາມຄຽດຕໍ່ໄປນີ້ສ້າງ vector
{3,2,1}:
{ i ໃນ [1:3] | 4 - ຂ້ອຍ }
Vectors ອາດຈະປາກົດເປັນສັນຍາລັກທີ່ຊື່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມໃຫຍ່.
ນອກຈາກຕົວປະຕິບັດການ scalar, ການປະຕິບັດ vector ດັ່ງຕໍ່ໄປນີ້ແມ່ນໄດ້ຖືກສະຫນອງໃຫ້:
avg - ຄ່າສະເລ່ຍຂອງ scalar ໃນ vector
len - ຄວາມຍາວຂອງ
sum - ຜົນລວມຂອງອົງປະກອບຂອງ
prod - ຜະລິດຕະພັນຂອງອົງປະກອບຂອງ
max - ຄ່າສູງສຸດຂອງ
min - ຄ່າຕໍ່າສຸດຂອງ
imax - ດັດຊະນີຂອງມູນຄ່າສູງສຸດຂອງ
imin - ດັດຊະນີຂອງມູນຄ່າຕໍາ່ສຸດທີ່ຂອງ
V[s] - ອົງປະກອບທີ s ຂອງ vector V ກັບຕົ້ນກຳເນີດ 0.
ຊື່ສັນຍາລັກໄດ້ຖືກນໍາສະເຫນີເຂົ້າໄປໃນຕາຕະລາງສັນຍາລັກທົ່ວໂລກໂດຍການສະແດງອອກຂອງການມອບຫມາຍ
ຮູບແບບ
a = A[2] * log(2)
ສັນຍາລັກທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມນ້ອຍເປັນຕົວແທນຂອງສະເກັດເງິນໃນຂະນະທີ່ສັນຍາລັກທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມນ້ອຍ
ຕົວອັກສອນຕົວພິມໃຫຍ່ເປັນຕົວແທນຂອງ vectors. ເນື່ອງຈາກ = ແມ່ນຕົວປະຕິບັດການ, ຜົນໄດ້ຮັບຂອງມັນສາມາດຖືກນໍາໃຊ້ເປັນ
ການສະແດງອອກ (ໃນ C).
ການກໍ່ສ້າງການຄວບຄຸມຈໍານວນຫນ້ອຍແມ່ນສະຫນອງໃຫ້:
ສໍາລັບ loops ສາມາດຖືກສ້າງຂື້ນເພື່ອ loop over vector ເປັນ, ກໍານົດແຕ່ລະຄ່າກັບສັນຍາລັກແລະຫຼັງຈາກນັ້ນ
ການປະເມີນຜົນການສະແດງອອກ. ນີ້ແມ່ນເຮັດດ້ວຍການສະແດງອອກຂອງແບບຟອມ
ທັງໝົດ=0; ສໍາລັບ{i ໃນ [0:len(A))} total=total+A[i]; ທັງໝົດ
ເຊິ່ງເທົ່າກັບຜົນລວມ(A). ໃຫ້ສັງເກດວ່ານີ້ແມ່ນຄ້າຍຄືກັນກັບການນໍາໃຊ້
ທັງໝົດ=0; len{i ໃນ [0:len(A)) | total=total+A[i]}; ທັງໝົດ
ຕັ້ງແຕ່ ສໍາລັບການ ການກໍ່ສ້າງແມ່ນຕົວປະຕິບັດຕົວຈິງ (ເຖິງແມ່ນວ່າມັນມັກຈະຖືກນໍາໃຊ້ພຽງແຕ່ສໍາລັບ
ການປ່ຽນແປງຄຸນຄ່າສັນຍາລັກ). ໃຫ້ສັງເກດວ່າໂດຍບໍ່ມີການສຸດທ້າຍ "ທັງຫມົດ", ສະແດງອອກ
ບໍ່ມີປະໂຫຍດຫຼາຍເພາະວ່າມັນຈະສົ່ງຄືນຄວາມຍາວຂອງ vector.
ໃນ C, ບັນຊີລາຍຊື່ຂອງການສະແດງອອກສາມາດຖືກລະບຸໄວ້ໃນ curlies:
total=total2=0;
ສໍາລັບ {i ໃນ [0:len(A))} {
total = ທັງໝົດ + A[i];
total2 = ທັງໝົດ2 + A[i]^2
}
ນອກຈາກນີ້ຍັງມີຮູບແບບຈໍານວນຫນຶ່ງຂອງ ຖ້າຫາກວ່າ - ຫຼັງຈາກນັ້ນ - ອື່ນ ສ້າງ:
A[0]<0 ? 0 : A[0]
ຖ້າ (A[0]<0) result=0 else results=A[0]
ໄດ້ ອື່ນ ເປັນທາງເລືອກ. ອີກເທື່ອ ໜຶ່ງ, ຖ້າການກໍ່ສ້າງແມ່ນຕົວປະຕິບັດການ, ແລະ ຫຼັງຈາກນັ້ນ or ອື່ນ
expressions ສາມາດເປັນລາຍການສະແດງອອກໃນ curlies, ໃນກໍລະນີນີ້ມູນຄ່າຂອງສຸດທ້າຍ
ການສະແດງອອກຖືກສົ່ງຄືນ. ຖ້າ ອື່ນ ການສະແດງຜົນຫາຍໄປ, ຫຼັງຈາກນັ້ນຄ່າ 0 ຈະຖືກສົ່ງຄືນ
ເມື່ອການສະແດງອອກການທົດສອບແມ່ນ 0 (ບໍ່ຖືກຕ້ອງ).
ຄວາມແປກປະຫລາດຕົ້ນຕໍກັບ ສໍາລັບການ ແລະ if constructs ແມ່ນວ່າບໍ່ເຫມືອນກັບຄໍາຖະແຫຼງ C, ພວກເຂົາຕ້ອງ
ແຍກອອກຈາກການສະແດງອອກຕໍ່ໄປໂດຍເຄື່ອງໝາຍຈຸດແມ້ແຕ່ເມື່ອມີລາຍການສະແດງຢູ່ໃນ
curlies ໄດ້ຖືກນໍາໃຊ້:
ສໍາລັບ i ໃນ [0:len(A)) {total=total+A[i]} ; ທັງໝົດ/ເລນ(A)
ຖ້າ (A[i]>0) {result=2;} else {result=1} ; ຜົນໄດ້ຮັບ *5
ວິທີທາງເລືອກໃນການແນະນໍາຊື່ສັນຍາລັກແມ່ນຜ່ານ ໃຫ້- ການສະແດງອອກ. ສໍາລັບຕົວຢ່າງ, ໄດ້
ການສະແດງອອກຕໍ່ໄປນີ້ຈະປະເມີນເປັນ 3 ສະເໝີ:
ໃຫ້ a = 1, b = 2 ໃນ a + b
ເຫຼົ່ານີ້ໄດ້ຖືກອອກແບບໃນເບື້ອງຕົ້ນເພື່ອສ້າງຕົວແປພຽງແຕ່ພາຍໃນສະແດງອອກການປະເມີນຜົນ,
ແຕ່ການດັດແກ້ໄດ້ຖືກເຮັດເພື່ອໃຫ້ຕາຕະລາງສັນຍາລັກຂອງໂລກມີການປ່ຽນແປງ.
ຕົວຢ່າງ
ນີ້ແມ່ນການສະແດງອອກສໍາລັບການຄິດໄລ່ມາດຕະຖານ deviation, ຄໍານຶງເຖິງ
ຄວາມເປັນໄປໄດ້ຂອງຂໍ້ມູນປ້ອນຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ, ເຊິ່ງຖືກລະເລີຍ:
s0 = s1 = s2 = 0;
ສໍາລັບ { i ໃນ [0:len(A)) } {
v=A[i];
ຖ້າ (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
ຖ້າ (s0 > 1) {
sqrt((s2 - s1*s1/s0) / (s0-1));
}
ອື່ນ {
ນານາ;
};
ຖ້າສຸດທ້າຍສາມາດປ່ຽນເປັນ 0 ຖ້າ s0 ແມ່ນ > 0 ແຕ່ <= 1. ພວກເຮົາຍັງລຸດລົງ curly.
ວົງເລັບ, ແຕ່ຫຼັງຈາກນັ້ນຈະຕ້ອງບໍ່ມີ ";" ລະຫວ່າງ if ແລະອັນອື່ນ
ຖ້າ (s0 > 1)
sqrt((s2 - s1*s1/s0) / (s0-1))
ອື່ນຖ້າ (s0 > 0)
0
ອື່ນ
ນາ
ຖ້າຫາກວ່າພວກເຮົາຕ້ອງການທັງສອງສະເລ່ຍແລະມາດຕະຖານ deviation, ພວກເຮົາສາມາດນໍາໃຊ້ -outfile ທາງເລືອກ,
ເອີ້ນຄໍາສັ່ງກັບ
minccalc -expfile stdev \
-outfile mean.mnc \
-outfile stdev stdev.mnc \
infile1.mnc infile2.mnc ...
ແລະການນໍາໃຊ້ໄຟລ໌ສະແດງອອກ (ມີຮູບແບບອື່ນຂອງ if expression):
s0 = s1 = s2 = 0;
ສໍາລັບ {i ໃນ [0:len(A))} {
v=A[i];
ຖ້າ (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
stdev = (s0 > 1) ? sqrt((s2 - s1*s1/s0) / (s0-1)):
(s0 > 0) ? 0 : ນາ ;
mean = (s0 > 0) ? s1 / s0 : NaN ;
ຂໍ້ຄວນລະວັງ
ບາງສິ່ງບາງຢ່າງທີ່ທ່ານຄວນຈື່ ...
ຕົວແປ vector ຕ້ອງເລີ່ມຕົ້ນດ້ວຍຕົວພິມໃຫຍ່.
ຊື່ຕົວແປຂອງ Vector ຈະຕ້ອງບໍ່ແມ່ນຫນຶ່ງໃນຄໍາທີ່ໃຊ້ຫນ້າທີ່,
sum, len, prod, ... ແລະອື່ນໆ
ສໍາລັບການ loops ແລະຖ້າຫາກວ່າການສະແດງອອກສະເຫມີໄປຈໍາເປັນຕ້ອງໄດ້ຖືກແຍກອອກຈາກການສະແດງອອກຕໍ່ໄປໂດຍ a
ຈໍ້າຈຸດ.
ຕາຕະລາງສັນຍາລັກແມ່ນທົ່ວໂລກ.
ຕົວປະຕິບັດການ Boolean && ແລະ || ສະເຫມີປະເມີນທັງສອງ operand.
ບັນທຶກກ່ຽວກັບການຂະຫນານ: ສໍາລັບເຫດຜົນປະສິດທິພາບ, ການປະເມີນຜົນແມ່ນເຮັດໃນຫຼາຍ voxels ໃນເວລາດຽວກັນ
(ຈໍານວນຂອງ voxels ແມ່ນຫມາຍເຖິງຄວາມກວ້າງຂອງການປະເມີນຜົນແລະມີການປ່ຽນແປງດ້ວຍ
ໄດ້ -eval_width ທາງເລືອກ). ຜົນສະທ້ອນທີ່ແປກປະຫລາດຂອງເລື່ອງນີ້ແມ່ນວ່າທັງສອງດ້ານຂອງ if-else
ຄໍາຖະແຫຼງທີ່ໄດ້ຖືກປະເມີນສະເຫມີ (ເວັ້ນເສຍແຕ່ວ່າ voxels ທັງຫມົດຈະໃຫ້ຜົນການທົດສອບດຽວກັນ), ແຕ່
ຖະແຫຼງການພາຍໃນແຕ່ລະຜົນຖືກປະເມີນພຽງແຕ່ຢູ່ໃນ voxels ທີ່ເຫມາະສົມ. ໃນ
ໂດຍສະເພາະ, ອົງປະກອບໃນຕາຕະລາງສັນຍາລັກໄດ້ຖືກດັດແກ້ພຽງແຕ່ອີງຕາມຫນ້າກາກ voxel. ກ
ຜົນກະທົບຂ້າງຄຽງນີ້ແມ່ນວ່າສັນຍາລັກ vector ໃດທີ່ຕັ້ງຢູ່ໃນຜົນສະທ້ອນຖ້າອື່ນຕ້ອງບໍ່ປ່ຽນແປງ
ຄວາມຍາວຂອງສັນຍາລັກ (ເຖິງແມ່ນວ່າມັນສາມາດສ້າງໄດ້) ແລະທັງສອງດ້ານຂອງຜົນສະທ້ອນຕ້ອງ
ຕົກລົງເຫັນດີກ່ຽວກັບຄວາມຍາວຂອງສັນຍາລັກ vector ທີ່ທັງສອງດັດແປງ. ຖ້າອັນນີ້ບໍ່ຊັດເຈນ,
ພຽງແຕ່ພະຍາຍາມມັນ - ໂຄງການຈະຈົ່ມຖ້າຫາກວ່າມັນບໍ່ພໍໃຈ.
ໃຊ້ minccalc ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net