MATLAB Answers

Build new matrix from look up table

1 view (last 30 days)
Hello,
I have a column vector A, corresponding to which I need to fill a vector C, the same size as A.
The value of C would be assigned from the "look up" table B-CD.
For the closest matching value of B to each element in A, the corresponding CD will be filled in to C.
So for the example below, for A= 0.35, 0.95, the C should be 200, 400.
How do I assign correct values to C?
%This code does not really work
A=[0.35 0.95];
C = zeros(length(A),1);
B=[0.1 0.4 0.8 1];
CD=[100 200 300 400];
minDiff =0.5;
for ii = 1:length(B)
diff = abs(B(ii) - A);
if(diff < minDiff)
B_index = ii;
minDiff = diff;
C=CD(B_index)
end
end

  0 Comments

Sign in to comment.

Accepted Answer

Catalytic
Catalytic on 6 Sep 2019
C=CD( interp1(B,1:numel(B),A,'nearest') );

  4 Comments

Show 1 older comment
Stephen Cobeldick
Stephen Cobeldick on 6 Sep 2019
Simpler and more elegant without indexing:
>> A = [0.35,0.95];
>> B = [0.1,0.4,0.8,1];
>> CD = [100,200,300,400];
>> C = interp1(B,CD,A,'nearest')
C =
200 400
Tapashree Roy
Tapashree Roy on 6 Sep 2019
Stephen, better still! Thanks!
Tapashree Roy
Tapashree Roy on 20 Sep 2019
Hi, Follow up question: Now that C is found, how can I find the corresponding B?
i,e.: for this example, when C = 200 400, BC=B would be BC= 0.4 1.

Sign in to comment.

More Answers (0)

Sign in to answer this question.