Code covered by the BSD License  

Highlights from
ensemble kalman filter

4.0
4.0 | 2 ratings Rate this file 44 Downloads (last 30 days) File Size: 3.86 KB File ID: #31093 Version: 1.9

ensemble kalman filter

by

 

18 Apr 2011 (Updated )

This program uses the ensemble kalman filter to estimate a system's state.

| Watch this File

File Information
Description

The algorithm used in this code is referenced from the following:
S Gillijns et al "What Is the Ensemble Kalman Filter and How Well Does it Work?"
Proceedings of the 2006 American Control Conference, Minneapolis, Minnesota, USA, June 14-16, 2006, pp 4448-4453.

 

Required Products Symbolic Math Toolbox
MATLAB release MATLAB 7.7 (R2008b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (6)
01 Nov 2013 Colette  
01 Nov 2013 Colette

Hello,

Thank you for your work on this file. It has been helpful to me as I begin learning Kalman Filter.

I am having a few issues with the code and was wondering if anyone else was too. Matlab is not my primary software, so I am wondering if it might be something simple (perhaps I need additional toolboxes). When I try to run the example, I get the following errors:

Error using sym/subs>normalize (line 206)
Entries in OLD must be scalar.

Error in sym/subs>mupadsubs (line 136)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok

Error in sym/subs (line 124)
G = mupadsubs(F,X,Y);

Error in ensemblekfilter3 (line 63)
x_true=subs(f,var_vector,x_true)+w.*randn(p1,1); %compute true value of state at next
time step

It seems I have found a solution by changing the loop to be:
for j=1:p1 %create vector containing variables x1 to xn
eval(sprintf(' syms x%d', j));
temp = sprintf('x%d ',j);
var_vector = [var_vector; sym(temp)];
%var_vector=[var_vector sprintf('x%d ',j)];
end
%var_vector=strcat('[',var_vector);
%var_vector=strcat(var_vector,']');

If anyone else has experienced similar errors or has further insight into mine, it would be appreciated.

Thanks,
Colette

25 Jun 2012 Abel Galois

Thanks a lot!

Comment only
16 Jun 2011 dwight nwaigwe

Hi Albert, thanks for catching that serious typo. I just corrected it and uploaded the new version.

Comment only
06 Jun 2011 albert chiang

Thank you for your work, i have found a mistake in your recent version. In line 71, yforbar=mean(ybar,2), i think it should be yforbar=mean(yfor,2).

Comment only
16 May 2011 albert chiang

have a look at!

Comment only
Updates
19 Apr 2011 1.1

changed description

20 Apr 2011 1.2

made minor adjustments to file such as inserting comments

10 May 2011 1.3

in the first few lines of the comments, I changed y+1 to y_new and x+1 to x_new

16 Jun 2011 1.4

Corrected line 71 as Albert Chiang mentioned.

It should be y_forbar=mean(y_for,2);
not y_forbar=mean(y_bar,2);

05 Apr 2013 1.7

Cosmetic changes: consolidated comments, removed the comment num_iterations = 20 as it wasn't necessary, and i added spaces and indents. i did these edits in notepad. i still have the original file in zipped folder to be safe

08 Apr 2013 1.8

whoops, i meant to say i deleted "num_members" = 20 from comments since it implied you must supply a variable with that name.

29 Oct 2013 1.9

Renamed variables and reorganized code for clarity. The original version is the .m file and the modified one is the .txt file. I haven't tested the .txt file but it should work.

Contact us