source: MML/trunk/machine/SOLEIL/StorageRing/insertions/IDStarter/idAuxInterpolTable2D.m @ 17

Last change on this file since 17 was 17, checked in by zhangj, 10 years ago

To have a stable version on the server.

  • Property svn:executable set to *
File size: 1.5 KB
Line 
1function new_m_with_arg = idAuxInterpolTable2D(m_with_arg, vNewArg1, vNewArg2, interpMeth)
2%Interpolates 2D table (matrix), preserving format: 1s column and 1st row of
3%the matrix m_with_arg keep the argument values
4%vNewArg1, vNewArg2 are the new arguments, in the format, e.g.:
5%   vNewArg1 = [15.5,16,17,18,19,20,22.5, ...];
6%   vNewArg2 = [-40,-37.5,-35,-32.5,-30, ...]
7
8numOldArg1 = size(m_with_arg, 1) - 1;
9numOldArg2 = size(m_with_arg, 2) - 1;
10
11vOldArg1 = zeros(numOldArg1, 1);
12vOldArg2 = zeros(numOldArg2, 1);
13mOld = zeros(numOldArg1, numOldArg2);
14for i = 1:numOldArg1
15        vOldArg1(i) = m_with_arg(i+1,1);
16end
17for j = 1:numOldArg2
18        vOldArg2(j) = m_with_arg(1,j+1);
19    for i = 1:numOldArg1
20        mOld(i,j) = m_with_arg(i+1,j+1);
21    end
22end
23%mNew = interp2(vOldArg1, vOldArg2, mOld, vNewArg1', vNewArg2', interpMeth);
24%mNew = interp2(vOldArg1, vOldArg2', mOld, vNewArg1', vNewArg2, interpMeth);
25if((size(vNewArg2, 1) > 1) && (size(vNewArg2, 2) == 1))
26        vNewArg2 = vNewArg2';
27end
28if((size(vNewArg1, 1) > 1) && (size(vNewArg1, 2) == 1))
29        vNewArg1 = vNewArg1';
30end
31mNew = interp2(vOldArg2', vOldArg1, mOld, vNewArg2, vNewArg1', interpMeth);
32
33numNewArg1 = length(vNewArg1);
34numNewArg2 = length(vNewArg2);
35new_m_with_arg = zeros(numNewArg1 + 1, numNewArg2 + 1);
36new_m_with_arg(1,1) = 0;
37for i = 1:numNewArg1
38    new_m_with_arg(i+1,1) = vNewArg1(i);
39end
40for j = 1:numNewArg2
41    new_m_with_arg(1,j+1) = vNewArg2(j);
42    for i = 1:numNewArg1
43        new_m_with_arg(i+1,j+1) = mNew(i,j);
44    end
45end
46
Note: See TracBrowser for help on using the repository browser.