530 likes | 789 Views
FINAL Project Information. Two Design Review presentations (10-15 minutes long) A Final Document of your Project (LaTeX) HTML Page Describing your Project Choice of Topic Due after break Teaming is Encouraged. Final Project. E-mail me your Final Project Topic after break
E N D
FINAL Project Information • Two Design Review presentations (10-15 minutes long) • A Final Document of your Project (LaTeX) • HTML Page Describing your Project • Choice of Topic Due after break • Teaming is Encouraged
Final Project • E-mail me your Final Project Topic after break • E-mail should contain • a half page abstract of your intended GUI design, and the problem domain that it addresses.
Quiz #2 Topics • RCS commands (ci and co) • mv • cp • grep • jobs
Representation of Information in a Computer • All information in a computer is stored as a collection of bits • A bit, also known as a binary digit, is a number represented in base 2. It can only be either a 1 (one) or 0 (zero) • Think of information as data with structure • All the one’s and zero’s represented by the computer is data. How they are interpretted generates information (or garbage)
Representation of Information in a Computer • Information stored in a computer can represent • Instructions • Executable Programs • Data • Numbers - integers and real values • Characters - ASCII, multinational characters • Others - imagery, sound, etc.
Representation of Information in a Computer • Bits in a computer are usually grouped into the following units • 4 bits == 1 nibble • 8 bits == 1 byte or 1 ( char ) - a single character • 16 bits == 2 bytes or 1 ( short int, int ) - integer value • 32 bits == 4 bytes or 1 ( long int, int ) - integer value or 1( float) - real value • 64 bits == 8 bytes or 1 (double) - real value
Representation of Information in a Computer • Numbers can be represented as either integers or real values integers { -5, 0, 125, -32767 } real { 3.14159, -2.71828, -1.0e-20, 10.000 } • Text is typically represented using the ASCII character set where each character is represented as a byte value.
Line Delimiters on Different Systems • UNIX System, lines delimited by linefeed • designated as nl • ASCII value of 012 or 10 • In MACS and PC’s, lines delimited by carriage returns • designated as cr • ASCII value of 015 or 13 • Still other systems use a combination of carriage return-line feeds to delimit lines
Common Cross PlatformFile Problem • Some one gave you a text file created on a PC which you transferred to the UNIX system. • You try to edit the file using vi, but vi complains that the line is too long • Solution: (A Stupid Unix Trick) % cat old_file | tr “\015” “\012” > new_file • This command translates all carriage returns to line feeds.
Converting a Negative Number into Binary using 2’s Complement
1-bit Address Line and 1-bit Data Line Computer Architecture
2-bit Address Line and 1-bit Data Line Computer Architecture
1-bit Address Line and 2-bit Data Line Computer Architecture
2-bit Address Line and 2-bit Data Line Computer Architecture
8-bit Address Line and 8-bit Data Line Computer Architecture
Caveat on Multi-Byte Data • When dealing with data that encompasses more than a single byte (e.g. integer value greater than 255), you must know the “endian” of the data • Endian represents how a machine interprets the significance of a set of bytes. • There are big-endian machines and little-endian machines
Caveat on Multi-Byte Data (Big Endian) • Big Endian Machines (Suns, Motorolas) would represent the integer value 512 internally as two bytes in the following order. MSB LSB 00000010 00000000
Caveat on Multi-Byte Data (Little Endian) • Little Endian Machines (DECS, Intels) would represent the integer value 512 internally as two bytes in the following order. LSB MSB 00000000 00000010
Caveat on Multi-Byte Data • This is typically not a problem as long as you stay on the same machine. • If you, however, start transferring data (e.g. images) in raw form from one machine to another, you will need to be aware of this situation. • You can often transpose multibyte data using the dd utility (does not work for data spanning more than two bytes)
Working with IDL Variables • Variable names must start with a letter but can include, letters, digits, underscore or dollar characters. • Variables are not case sensitive, i.e., • Celsius is equivalent to celsius
Working with IDL Variables • Variables in IDL have two important attributes • Data type • Attributes
IDL Variable Data Types • Undefined • Integer Values • Byte, Integer, Long Integer • Floating Point Values • Floating Point, Double Precision • Single Precision Complex, Double Precision Complex • String
IDL Variable Data Structures • Scalar • Vector (one-dimensional array) • Array (up to eight dimensions) • Structure (combination of any mixture of data - Very Important in understanding Object-Oriented Programming Concepts)
Initializing Scalar Variables byte_variable = 0B integer_variable = 0 long_integer = 0L float_variable = 0.0 double_variable = 0.0D complex_variable = Complex(0.0, 0.0) dcomplex_variable = DComplex(0.0, 0.0) string_variable = ‘‘
Initializing Array Variables byte_array = bytarr( 256, 256, 3 ) integer_array = intarr( 256, 256 ) long_array = lonarr( 256, 256 ) float_array = fltarr( 256, 256 ) double_array = dblarr( 256, 256 ) complex_array = complexarr( 256, 256 ) dcomplex_array = dcomplexarr( 256, 256) string_array = strarr(80)
Shortcut Creating Indexed Array • Some sample command IDL> num = findgen(40) IDL> help,num NUM FLOAT = Array(40) IDL> print,num 0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.0000 31.0000 32.0000 33.0000 34.0000 35.0000 36.0000 37.0000 38.0000 39.0000
Initializing Array Variables • Initializing Array with each element set to its subscript bindgen, indgen, lindgen, findgen, dindgen, cindgen, dcindgen, sindgen • Only real parts of complex numbers are set to the subscripts • An array of strings containing the numbers is created by sindgen
Initializing Array Variables (make_array and replicate) • Make_array function is a general way of creating and initializing arrays array=make_array(10,12,Value=1,/Int) • Replicate functions allows initialization of all elements of an array with a given variable (useful in structures) initial_value = 1 array=replicate(initial_value, 10,12)
Structures in IDL • Allows more abstract data types to be created from other basic data types • Example • Date data structure IDL> a={date, month:0B, day:0B, year:0B} IDL> print,a { 0 0 0}
Structures in IDL(Names Structure) • Date Example (using a Named Structure) IDL> a.month=12 IDL> a.day=25 IDL> a.year=96 IDL> print,a { 12 25 96} IDL> print,a.month 12 IDL> print,a.day 25 IDL> print,a.year 96
Using Named Structures • Date Named Structure Example IDL> c={date} IDL> print,c { 0 0 0} IDL> help,c C STRUCT = -> DATE Array(1)
Anonymous Structures in IDL • Anonymous Structures IDL> d={month:1,day:1,year:97} IDL> print,d { 1 1 97} IDL> e=d IDL> print,e { 1 1 97}
Anonymous Structure Example • Anonymous Structures IDL> e={month:'January',day:d.day,year:d.year} IDL> print,e { January 1 97} IDL> e.month='December' IDL> print,e { December 1 97}
Querying Structures in IDL • Determining Variable Structure IDL> help,e,/structure ** Structure <761058>, 3 tags, length=12, refs=1: MONTH STRING 'December' DAY INT 1 YEAR INT 97
Structures in IDL • Determining Structure Characteristics IDL> print,n_tags(e) 3 IDL> print,tag_names(e) MONTH DAY YEAR
Array Manipulation in IDL • Let’s create an array representing a multiband image IDL> image=bindgen(2,3,4) IDL> print,image 0 1 2 3 4 5
Array Manipulation in IDL • image continued 6 7 8 9 10 11 12 13 14 15 16 17
Array Manipulation in IDL • image continued 18 19 20 21 22 23
Array Manipulation in IDL • Extract the first and last band of the image IDL> print,image(*,*,0) 0 1 2 3 4 5 IDL> print,image(*,*,3) 18 19 20 21 22 23
Array Manipulation in IDL • Extracting the “color” or “spectral vector” of the first pixel IDL> print,image(0,0,*) 0 6 12 18
Array Manipulation in IDL • Assign band 1 to band 4 IDL> band1=image(*,*,0) IDL> image(*,*,3) = band1 • Shortcut IDL> image(*,*,3)=image(*,*,0)