MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Jaap de Vries on 13 Dec 2012

To whom it may concern:

It is one of those days when apparent simple tasks seem hard for some reason.

I have a continues but highly non smooth dataset of emissivity versus wavelength. I would really like to put this into a (lookup) function so the my dataset (lamda, e), i.e.,

Lamda e 0.25 0.545 0.26 0.556 0.27 0.654

…etc will turn into a function e = f(lamda). This would be very helpful since I can then create a function handle and integrate over certain wavelength regions and perform other operations.

Any suggestions???

*No products are associated with this question.*

Answer by Matt Fig on 14 Dec 2012

Accepted answer

You could use POLYFIT, or the curve fitting toolbox or a simple interpolation.

>> x = 0:.25:5; >> y = x.^2; >> f = @(z) interp1(x,y,z); % Lookup table function >> x2 = 1/8:1/8:5; % Just to compare func to data. >> plot(x,y,'sb',x2,f(x2),'*r')

Jaap de Vries on 14 Dec 2012

Perfect Matt, This solved the problem. I preferred the interp1 function since the data is to jagged for a POLYFIT would require too many coefficients. My code now reads

% Import the data from a text file. ems = importdata('Emmisivity.txt'); %the spectrally resolved emissivity data Data = ems.data; %Selects the values, neglects the headers

% create a lookup function handle for the data. specEms = @(lamda) interp1(Data(:,1), Data(:,2),lamda);

% create a function handle for the spectral exitance, a basically the Max % Planck’s law for a black body. specExbb = @(lamda, T) specexitance(lamda, T); %funtion created by me.

% create a exitance function for a selective emitter. specExSel = @(lamda, T) specExbb(lamda, T).*specEms(lamda);

% integrate over a user-specified range (lamda1-lamda2), leave the function % parameterized with respect to T. ExSel = @(lamda1, lamda2, T) integral(@(lamda) specExSel (lamda,T),lamda1,lamda2);

Thank you so much, my faith in humanity is ones again restored. Jaap

Answer by Jing on 13 Dec 2012

Hi Jaap, I can't fully understand your question. Do you mean you want a lookup table in function form? If so, you can use fitting process(The fitting highly depends on the fit type your use) to build a function, but the function may not be very accurate at each data point.

## 0 Comments