Assignment 9, Part 1: model function
This is Part 1 of Assignment 9.
In the Assignment 9 Overview, we provided a way to model the sample temperature based on the block temperature:
function SimulatedTemperatureOutput = SimulateLowPass( TimeConstant, InputData, TimeVector ) if( nargin < 3 ) TimeVector = (0:(length(InputData)-1))/10; end transferFunction = tf( 1, [TimeConstant, 1] ); initalTemperature = InputData(1); InputData = InputData - initalTemperature; SimulatedTemperatureOutput = lsim( transferFunction, InputData, TimeVector' ) + initalTemperature; end
In a similar fashion, write functions in MATLAB for S(t), the expression for photobleaching, and Q(t), the expression for thermal quenching. You are welcome to use the following templates as a guide, but note that you may need to alter the input and/or output parameters of these functions to suit your final purpose.
function SimulatedBleachingOutput = SimulatePhotobleaching( Kbleach, InputData ) ... end function SimulatedQuenchingOutput = SimulateThermalQuenching( Kquench, InputData ) ... end
Once you have all the pieces, put everything together into a single model function representing:
- $ \left . V_{f,model}(t) = K_{gain} S(t) Q(t) C_{ds}(T_{sample}(t), \Delta H^\circ, \Delta S^\circ) + K_{offset}\right . $
Here, C_{ds} is the model melting curve produced by the DnaFraction
function from part 1 of the lab.
In order for the function to be compatible with MATLAB's nlinfit, the first input argument must be a vector containing all the parameters to be fitted, and the second argument must contain a vector/matrix of the independent variable(s). Don't forget to include parameters for the instrument gain and offset, and $ \Delta H^\circ, \Delta S^\circ $, as well as the bleaching, quenching, and thermal time constants.
function SimulatedOutput = Vfmodel( Parameters, InputData ) tauThermal = Parameters(1); Kbleach = Parameters(2); ... end
your code (after having tested it in part 2) |
- Assignment 9 Overview
- Part 1: model function
- Part 2: test your code with simulated data
- Part 3: fitting your data