Rolando V. RaqueñoTuesday, May 12, FINAL Project Information Two Design Review presentations ( minutes long) A Final Document of your Project (LaTeX) HTML Page Describing your Project Choice of Topic Due after break Teaming is Encouraged
Rolando V. RaqueñoTuesday, May 12, Final Project me your Final Project Topic after break should contain – a half page abstract of your intended GUI design, and the problem domain that it addresses.
Rolando V. RaqueñoTuesday, May 12, Quiz #2 Topics RCS commands (ci and co) mv cp grep jobs
Rolando V. RaqueñoTuesday, May 12, Working with Data
Rolando V. RaqueñoTuesday, May 12, 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)
Rolando V. RaqueñoTuesday, May 12, 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.
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, Representation of Information in a Computer Numbers can be represented as either integers or real values integers { -5, 0, 125, } real { , , -1.0e-20, } Text is typically represented using the ASCII character set where each character is represented as a byte value.
Rolando V. RaqueñoTuesday, May 12, Representation of Information in a Computer
Rolando V. RaqueñoTuesday, May 12, Representation of Information in a Computer
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, Common Cross Platform File 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.
Rolando V. RaqueñoTuesday, May 12, Numbering Systems
Rolando V. RaqueñoTuesday, May 12, Converting Number Bases
Rolando V. RaqueñoTuesday, May 12, Converting Number Bases
Rolando V. RaqueñoTuesday, May 12, Negative Number Representation
Rolando V. RaqueñoTuesday, May 12, Converting a Negative Number into Binary using 2’s Complement
Rolando V. RaqueñoTuesday, May 12, How Does This All Relate to Computers and Programming
Rolando V. RaqueñoTuesday, May 12, bit Address Line and 1-bit Data Line Computer Architecture
Rolando V. RaqueñoTuesday, May 12, bit Address Line and 1-bit Data Line Computer Architecture
Rolando V. RaqueñoTuesday, May 12, bit Address Line and 2-bit Data Line Computer Architecture
Rolando V. RaqueñoTuesday, May 12, bit Address Line and 2-bit Data Line Computer Architecture
Rolando V. RaqueñoTuesday, May 12, bit Address Line and 8-bit Data Line Computer Architecture
Rolando V. RaqueñoTuesday, May 12, In General
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, 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)
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, Working with IDL Variables Variables in IDL have two important attributes –Data type –Attributes
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, 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)
Rolando V. RaqueñoTuesday, May 12, 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 = ‘‘
Rolando V. RaqueñoTuesday, May 12, 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)
Rolando V. RaqueñoTuesday, May 12, Shortcut Creating Indexed Array Some sample command IDL> num = findgen(40) IDL> help,num NUM FLOAT = Array(40) IDL> print,num
Rolando V. RaqueñoTuesday, May 12, 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
Rolando V. RaqueñoTuesday, May 12, 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)
Rolando V. RaqueñoTuesday, May 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}
Rolando V. RaqueñoTuesday, May 12, 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 { } IDL> print,a.month 12 IDL> print,a.day 25 IDL> print,a.year 96
Rolando V. RaqueñoTuesday, May 12, Using Named Structures Date Named Structure Example IDL> c={date} IDL> print,c { 0 0 0} IDL> help,c C STRUCT = -> DATE Array(1)
Rolando V. RaqueñoTuesday, May 12, Anonymous Structures in IDL Anonymous Structures IDL> d={month:1,day:1,year:97} IDL> print,d { } IDL> e=d IDL> print,e { }
Rolando V. RaqueñoTuesday, May 12, 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}
Rolando V. RaqueñoTuesday, May 12, Querying Structures in IDL Determining Variable Structure IDL> help,e,/structure ** Structure, 3 tags, length=12, refs=1: MONTH STRING 'December' DAY INT 1 YEAR INT 97
Rolando V. RaqueñoTuesday, May 12, Structures in IDL Determining Structure Characteristics IDL> print,n_tags(e) 3 IDL> print,tag_names(e) MONTH DAY YEAR
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL Let’s create an array representing a multiband image IDL> image=bindgen(2,3,4) IDL> print,image
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL image continued
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL image continued
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL Extract the first and last band of the image IDL> print,image(*,*,0) IDL> print,image(*,*,3)
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL Extracting the “color” or “spectral vector” of the first pixel IDL> print,image(0,0,*)
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL Assign band 1 to band 4 IDL> band1=image(*,*,0) IDL> image(*,*,3) = band1 Shortcut IDL> image(*,*,3)=image(*,*,0)
Rolando V. RaqueñoTuesday, May 12, Array Manipulation in IDL Subsectioning parts of an image IDL> print,image(0:1,0:1,*)
Rolando V. RaqueñoTuesday, May 12, Array Manipulation where function to find indices of elements that meet certain criteria IDL>print, where(image gt 5 and image lt 12) Use of other arrays to index other arrays IDL>indices=where(image gt 5 and image lt 12) IDL>image(indices)=-1 Try the above as an exercise.
Rolando V. RaqueñoTuesday, May 12,