BIOE 198MI Biomedical Data Analysis. Spring Semester 2019 Lab 1b. Matrices, arrays, m-files, I/O, custom functions

Similar documents
Colorado State University Department of Mechanical Engineering. MECH Laboratory Exercise #1 Introduction to MATLAB

CME 192: Introduction to Matlab

MATH (CRN 13695) Lab 1: Basics for Linear Algebra and Matlab

Lab of COMP 406. MATLAB: Quick Start. Lab tutor : Gene Yu Zhao Mailbox: or Lab 1: 11th Sep, 2013

Introduction to MATLAB LAB 1

Creates a 1 X 1 matrix (scalar) with a value of 1 in the column 1, row 1 position and prints the matrix aaa in the command window.

Exploration Assignment #1. (Linear Systems)

A/D Converter. Sampling. Figure 1.1: Block Diagram of a DSP System

Teaching Manual Math 2131

Finding, Starting and Using Matlab

MATLAB Tutorial. 1. The MATLAB Windows. 2. The Command Windows. 3. Simple scalar or number operations

MATLAB Tutorial. Mohammad Motamed 1. August 28, generates a 3 3 matrix.

Introduction to Matlab

Eric W. Hansen. The basic data type is a matrix This is the basic paradigm for computation with MATLAB, and the key to its power. Here s an example:

A Guide to Using Some Basic MATLAB Functions

Dr Richard Greenaway

Programming in Mathematics. Mili I. Shah

MATLAB Programming for Numerical Computation Dr. Niket Kaisare Department Of Chemical Engineering Indian Institute of Technology, Madras

Constraint-based Metabolic Reconstructions & Analysis H. Scott Hinton. Matlab Tutorial. Lesson: Matlab Tutorial

Part #1. A0B17MTB Matlab. Miloslav Čapek Filip Kozák, Viktor Adler, Pavel Valtr

1. Register an account on: using your Oxford address

Algebra 1 Semester 2 Final Review

Introduction to Matlab

Introduction to MATLAB

Appendix A. Introduction to MATLAB. A.1 What Is MATLAB?

MATLAB GUIDE UMD PHYS401 SPRING 2012

Calculus Limits Images in this handout were obtained from the My Math Lab Briggs online e-book.

Introduction to Matlab. By: Hossein Hamooni Fall 2014

PowerPoints organized by Dr. Michael R. Gustafson II, Duke University

MATLAB Project: Getting Started with MATLAB

MATLAB Lesson I. Chiara Lelli. October 2, Politecnico di Milano

Programming 1. Script files. help cd Example:

How to learn MATLAB? Some predefined variables

Introduction to MATLAB for Numerical Analysis and Mathematical Modeling. Selis Önel, PhD

Introduction to Matlab. By: Dr. Maher O. EL-Ghossain

ELEC4042 Signal Processing 2 MATLAB Review (prepared by A/Prof Ambikairajah)

MATLAB Tutorial III Variables, Files, Advanced Plotting

Interactive MATLAB use. Often, many steps are needed. Automated data processing is common in Earth science! only good if problem is simple

AMATH 352: MATLAB Tutorial written by Peter Blossey Department of Applied Mathematics University of Washington Seattle, WA

EE 1105 Pre-lab 3 MATLAB - the ins and outs

Introduction to MATLAB

MATLAB INTRODUCTION. Matlab can be used interactively as a super hand calculator, or, more powerfully, run using scripts (i.e., programs).

Digital Image Processing

Lesson 19: The Graph of a Linear Equation in Two Variables is a Line

MBI REU Matlab Tutorial

Algebra 2 Common Core Summer Skills Packet

Section Graphs and Lines

1 Introduction and Overview

Chapter 1 Introduction to MATLAB

MATLAB Introduction to MATLAB Programming

MATLAB Project: Getting Started with MATLAB

Introduction to Octave/Matlab. Deployment of Telecommunication Infrastructures

MATLAB GUIDE UMD PHYS401 SPRING 2011

Experiment 1: Introduction to MATLAB I. Introduction. 1.1 Objectives and Expectations: 1.2 What is MATLAB?

LAB 1 General MATLAB Information 1

1 Introduction to Matlab

Table of Contents. Introduction.*.. 7. Part /: Getting Started With MATLAB 5. Chapter 1: Introducing MATLAB and Its Many Uses 7

EE 301 Signals & Systems I MATLAB Tutorial with Questions

DSP Laboratory (EELE 4110) Lab#1 Introduction to Matlab

EE3TP4: Signals and Systems Lab 1: Introduction to Matlab Tim Davidson Ext Objective. Report. Introduction to Matlab

Introduction to MATLAB for Engineers, Third Edition

2.2 Creating & Initializing Variables in MATLAB

Chapter 2. MATLAB Fundamentals

Chapter 2. MathScript

Laboratory 1 Introduction to MATLAB for Signals and Systems

CPIB SUMMER SCHOOL 2011: INTRODUCTION TO BIOLOGICAL MODELLING

Introduction to Matlab. Summer School CEA-EDF-INRIA 2011 of Numerical Analysis

Course Layout. Go to follow instr. Accessible within campus (only for the first download)

Chapter 2 (Part 2) MATLAB Basics. dr.dcd.h CS 101 /SJC 5th Edition 1

Here is a quick introduction to Matlab and a couple of its symbolic and control functions.

Lesson 19: The Graph of a Linear Equation in Two Variables Is a Line

Getting To Know Matlab

UNIVERSITI TEKNIKAL MALAYSIA MELAKA FAKULTI KEJURUTERAAN ELEKTRONIK DAN KEJURUTERAAN KOMPUTER

EE-3221 MATLAB INTRODUCTION

Introduction to Applied and Pre-calculus Mathematics (2008) Correlation Chart - Grade 10 Introduction to Applied and Pre-Calculus Mathematics 2009

INTRODUCTION TO MATLAB, SIMULINK, AND THE COMMUNICATION TOOLBOX

DSP First Lab 02: Introduction to Complex Exponentials

Math-2. Lesson 3-1. Equations of Lines

Introduction to Matlab to Accompany Linear Algebra. Douglas Hundley Department of Mathematics and Statistics Whitman College

Concept of Curve Fitting Difference with Interpolation

Introduction to MATLAB

Matlab and Octave: Quick Introduction and Examples 1 Basics

MAT 343 Laboratory 1 Matrix and Vector Computations in MATLAB

MAT 003 Brian Killough s Instructor Notes Saint Leo University

AN INTRODUCTION TO MATLAB

MATLAB Fundamentals. Berlin Chen Department of Computer Science & Information Engineering National Taiwan Normal University

OUTLINES. Variable names in MATLAB. Matrices, Vectors and Scalar. Entering a vector Colon operator ( : ) Mathematical operations on vectors.

Page 1 of 7 E7 Spring 2009 Midterm I SID: UNIVERSITY OF CALIFORNIA, BERKELEY Department of Civil and Environmental Engineering. Practice Midterm 01

LAB 2: Linear Equations and Matrix Algebra. Preliminaries

Introduction to MATLAB 7 for Engineers

EEE161 Applied Electromagnetics Laboratory 1

Lecturer: Keyvan Dehmamy

ECE 3793 Matlab Project 1

PetShop (BYU Students, SIGGRAPH 2006)

Introduction to MATLAB Programming. Chapter 3. Linguaggio Programmazione Matlab-Simulink (2017/2018)

AMS 27L LAB #2 Winter 2009

Introduction to MATLAB Practical 1

HERIOT-WATT UNIVERSITY DEPARTMENT OF COMPUTING AND ELECTRICAL ENGINEERING. B35SD2 Matlab tutorial 1 MATLAB BASICS

Chapter 1: Number and Operations

Learning from Data Introduction to Matlab

Transcription:

BIOE 198MI Biomedical Data Analysis. Spring Semester 2019 Lab 1b. Matrices, arrays, m-files, I/O, custom functions A. Scalars, vectors, and matrices versus arrays and the associated syntax In terms of computing applications, vectors and matrices are similar to 1 and 2-D arrays. While the mathematical properties and very specific for vectors and matrices, Matlab treats them the same for the most part so it makes sense for us to introduce a little matrix math. Vectors like xx = xxıı + yyȷȷ include constant unit vectors ıı, ȷȷ that indicate direction while scalar variables x,y indicate magnitude. A unit vector has magnitude 1. (Equivalently, we can apply polar coordinates and Matlab s angle). >> a=2; defines scalar at an address labeled a with value 2. >> v = [1;2;3;4;5;6] 6x1 column array. v = 1 2 3 4 5 6 >> u = v' u is transpose of v. u = 1 2 3 4 5 6 or >> u = 1:6 or >> u = [1 2 3 4 5 6] Figure 1. Illustration of vectors, matrix, and arrays. >> b=a*v; scalar-vector product. Note that b' = (a*v) = a*v' >> b=v'*v v is a vector (1-D array) and b is a scalar given by NN inner product v'*v = vv 2 jj = 1 + 4 + 9 + 16 + 25 + 36 = 91 >> b = 91 jj=1 >> B = v*v' define B as 6x6 matrix given by the outer product v*v' B = 1 2 3 4 5 6 uu 1 2 4 6 8 10 12 uuvv tt = uu 2 (vv 1 vv 2 vv 3 ) 3 6 9 12 15 18 uu 3 4 8 12 16 20 24 uu 1 vv 1 uu 1 vv 2 uu 1 vv 3 5 10 15 20 25 30 = uu 2 vv 1 uu 2 vv 2 uu 2 vv 3 6 12 18 24 30 36 uu >> note vector products do not commute 3 vv 1 uu 3 vv 2 uu 3 vv 3 See https://www.coursera.org/lecture/matrix-algebra-engineers/inner-andouter-products-3jzwp >> type in 3x2 matrix C and 2x3 matrix D 1

>> C = [1 2;3 4;5 6] spaces & semicolons indicated different actions C = 1 2 3 4 (3x2 matrix) 5 6 >> D = [1 3 5;2 4 6] D = 1 3 5 (2x3 matrix) 2 4 6 >> E = C-D' E = 0 0 0 0 (3x2 3x2 = 3x2 matrix) 0 0 >> F = C'-D F = 0 0 0 (2x3 2x3 = 2x3 matrix) 0 0 0 >> Note that C = D' and C' = D but C-D' C'-D. Also, >> D = [1:3;4:6] another method for generating matrices D = 1 2 3 4 5 6 >> E = C*D matrix product exist only if C is NxM, D is MxP, and E is NxP E = 9 12 15 19 26 33 29 40 51 >> F = E/D right divide D into E: F = E/D = C*D/D = C. Note since C and D are rectangular matrices, inv(c) and inv(d) do not exist. F = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 >> G = C\E left divide of C into E: G = C\E = C\C*D = D G = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 AA = aa 11 aa 12 aa 21 aa 22 BB = bb 11 bb 12 bb 21 bb 22 AAAA = aa 11bb 11 + aa 12 bb 21 aa 11 bb 12 + aa 12 bb 22 aa 21 bb 11 + aa 22 bb 21 aa 21 bb 12 + aa 22 bb 22 Default number values in MATLAB are double precision float point where 5 significant figures are displayed. For example, the decimal value for 5/4 is 1.2500. Exercise: Do the following both analytically and numerically. 1. Find the inner and outer products: clear all; a = [4;3;2;1]; 2

2. Let A = [1 2;3 4]; Find A^2, A.^2, sqrt(a), A*A', A'*A and explain differences. 3. Let b = [4 3 2 1]; Try to compute a-b, a'-b and a-b' Explain the differences. 4. Complex numbers (vectors in the complex plane), e.g., z = x + iy and its conjugate z* = x iy. Let a=1+i; b=2-2*i; Also let c = (2*a').'; and d = conj(b/2); Explain why a = d and b = c 5. Take the square root of the product of a and b. The ambiguity is intentional! 6. Scalars are special cases of vectors just as vectors are special cases of matrices. Scalars have just one element. Yet the right and left divide operations still work. Before entering these into Matlab, predict the results of computing 8/2, 2\8 and 8\2. Hint, which number is in the denominator? B. Scripts (m-files) and Data Display If y n = f n (x), find y n from x for n = 1, 2. First, open an m-file using the editor, then type or copy and paste the following (being careful to note that some ASCII characters do not transfer accurately). Give your m-file a name by clicking SAVE AS. clear all; close all; x = linspace(0,1,11); y1 = x.^2; y2=sin(2*pi*x/x(11)); plot(x,y1,x,y2) (1) str1=['maximum value in y1 ' num2str(max(y1))]; disp(str1); z=max(y1); fprintf('maximum value in y1 is 1.2f\n',z) (2) str2 = ['Maximum value in y2 is ' num2str(max(y2)) ' volts.'];... (3) disp(str2) This code generates two functions y1 and y2 and 1. Finds the maximum value of y1, converts the numerical value to a string for display using num2str, define string str1, and display the result using disp. 2. Displays the same value using the fprintf command. Notice the different representation: 1.00 from 1.2f/n syntax, where is a control character, 1.2f prints a FP number with one digit to the left and two to the right, and /n imposes a CR because fprintf does not supply one. 3. Repeat for y2 using disp. What do you expect for the maximum value? Why is the computed value less than your expected number? Hint, look at the plot. Note that continues the function on the next line, which in this case is completely unnecessary! Do you see why? Summary: m-files are a great way to develop and store code. There are two (rather cumbersome) ways of outputting results to the display. The use of generates a segment that can be executed indepently. It only works in a m-file, not in the command window. 3

C. Saving and Loading Data SECTION 1 clear all; close all; a = [1 2 3 4 5]; generate a row vector (1-D array) dlmwrite('temp.txt',a,'\t'); save a to disk as text file w/tab delimiters whos see what is in the workspace SECTION 2 b = load('temp.txt'); whos; read text file and convert to DPFP values c = b.^2; c is the square of each element of vector b save('tempx.mat','b','c'); clear all; save b and c and clear workspace load('tempx.mat'); b,c read the saved mat file and display b and c In this m-file: The first section generates row vector a and writes the 1-D array into a txt file. Look for it in the current folder section. This type of write uses delimiters so the file can be read by other programs, like Excel. This particular delimiter is a tab as specified by '/t'. Use ',' to apply a comma delimiter. The second section loads the variables from a mat-file into an array. In this case, it is loading into memory data from an ASCII file into a double-precision floating-point array. DPFP data type allows mathematical operations on b to generate c. We then store those values as strings in a mat-file. You can choose to save the entire work space using save('filename.mat'). Finally, we cleared the workspace and reloaded data arrays b and c. D. Keyboard Input, FOR loops, and IF statements SECTION 1 close all; a=[1;2;3;4;5;6]; b=a'*a; inner product c=0; for j=1:6 inner product using for loop c=c+j^2; b,c SECTION 2 clear all; close all; clc Place an IF statement within a FOR loop. for j=1:100 display of line text only when j=100 if (j > 99) disp(['end of the line! ' num2str(j)]); SECTION 3 FOR loop within an IF statement: Request user input integer to calculate m! m = input('enter an integer: '); input value from keyboard. fac = 1; next line, m <= 21 to remain accurate if (m >= 0 && m-floor(m) == 0 && m <= 21) check three conditions for j=2:m FOR lo22op computes m! if input qualifies fac = fac*j; disp(['the factorial of ' num2str(m) ' is ' num2str(fac)]); disp(['matlab function gives ' num2str(factorial(m))]); else disp(['cannot compute the factorial of ' num2str(m)]); 4

The first section applies a simple for loop to compute an inner product by hand. The second section looks at 100 numbers and tells you when it reaches the last number, i.e., 100. We needed to add an if statement. The third section computes the factorial of a positive integer but only for outputs within the range of accuracy for double precision floating-point numbers (15 digits). E. Filling a 2-D Array with Different 1-D Arrays clear all; close all; x = -10:0.01:10; X0=length(x); X2=ceil(X0/2); Y=zeros(X0);parameters Look for these variables in Workspace for j=1:x0 j is the address; x(j) is the value at that address m=x(j); slope for each row starts negative and increases Y(j,:)=m*x; zero intercept on linear function imagesc(y); colormap gray; axis square create grayscale image of result figure; subplot(3,1,1);plot(y(1,1:2000)); first row or Y subplot(3,1,2);plot(y(x2,1:2000)) second row of Y subplot(3,1,3);plot(y(x0,1:2000)) third row of Y Explore via min(min(y)) and Y(1001,1001) Y(1,1) How do we build a 2-D array from a 1-D array? This section applies a FOR loop to fill each row of matrix Y with a linear function m*x where slope -10 m 10 steps from negative to positive as we index through rows. Note that Y(j,:) addresses all elements in the jth row, since we fix the row first and then fill all columns in that row of the 2-D array. We also introduce the subplot for making arrays of plots. In this case, we make a column vector of three plots. The third element in the argument addresses each plot element. I used the second line of code to define X0 and X2 so, when those parameters change, only that single line changes. Also consider z=3.14 and apply ceil, floor, round, and fix. F. Creating Custom Plotting Function Create a simple script that generates a one-cycle sine and cosine waves. Use a custom function called myplot to plot each with clear features. Note that you should place the myplot function in your Documents > Matlab directory or define a path. t=1:1000;x=2*sin(2*pi*t/1000);myplot(t,x) hold on; y=2*cos(2*pi*t/1000);myplot(t,y) In a separate m-file labeled myplot we have the following function myplot(x,y) place this function in the same folder plot(x,y,'linewidth',2) use figure to avoid over-writing last plot ax = gca; current axes ax.fontsize = 20; 5

Assignment: 1. Hill functions f (X) model the action of activator X (input) as it engages the promotor of the gene within cellular DNA that ultimately produces protein Y (output). In its simplest form, the Hill function for activator XX YY is ff(xx) = XXnn = 1. (1) KK nn +XX nn 1+ XX KK nn There are two parameters. K is the activation coefficient that describes the affinity between X and the promotor (among other factors). At K=X, we find Y=Y max /2. Parameter n is the Hill coefficient that describes the sensitivity of Y concentration to changes in X concentration, Y/ X. (a) Generate a plot of Y protein concentration as a function of scaled translational activator concentration input X/K for Hill coefficient values n = 0.25, 0.5, 1.0, 2.0, 4.0. Compare those 5 plots with a step function. You can compute a step function by selecting a sixth value of n appropriately. Figure 2. Illustration of transcriptional regulation of a gene. Transcription is the synthesis of mrna from a DNA template whereas translation is the synthesis of protein from an mrna template. Diagram (a) describes an inactive gene. Diagram (b) describes the actions of activator X to increase the affinity for RNA polymerase (RNAp) to the promotor site that then synthesizes messenger mrna from the genetic code of gene Y. During translation, a ribosome works with mrna to synthesize protein Y. The process is described by Y= f (X). (b) Some promoters are naturally activated. In those cases, action is required to turn these genes off. The translational repressor XX YY is also modeled by the Hill equation where exponent n is changed to +n. Generate a plot of Y protein concentration as a function of scaled repressor concentration input X/K for Hill coefficient values n = 1.0, 2.0, 4.0. Compare those 3 plots with a step function. (c) Write a lab report BRIEFLY describing the biology of transcriptional regulation. Also, tell me what the Hill equations describe. Are there other models? Include the Hill equations and two plots showing translational activation and translational repression curves. The activator plot should have 6 curves, each should be labeled and there needs to be a figure caption clearly explaining. The repressor plot should have 4 curves. Hint: Start with n=1 in the activator equation and generate one plot. Then find a way to index through the entire range of n. 6