MATLAB MATLAB vector value location ID

AI Thread Summary
In MATLAB, to extract the value of a dependent vector (pressure, p) at a specific point in an independent vector (time, t), interpolation is the recommended approach. The interp1 command is particularly useful for one-dimensional interpolation. In a practical example, users can create vectors for p and t, and utilize logical indexing to find values corresponding to specific time points. A common issue arises when the exact value is not found due to floating-point precision, which can be resolved by using a range check with machine epsilon. This allows for accurate extraction of values even at non-integer time points.
DoubleHubble
Messages
8
Reaction score
0
HELP! MATLAB vector value location ID?

In MATLAB, say I have two vectors of the same length -- because one is dependent on the other. In my case the independent vector is t, time, and the dependent is p, pressure.

t = 0:500 with an arbitrary time step (finer than 0.2 seconds).

I would like to know the easiest way to extract the value of p at t = 300.2. Any ideas?
 
Last edited:
Physics news on Phys.org


DoubleHubble said:
In MATLAB, say I have two vectors of the same length -- because one is dependent on the other. In my case the independent vector is t, time, and the dependent is p, pressure.

t = 0:500 with an arbitrary time step (finer than 0.2 seconds).

I would like to know the easiest way to extract the value of p at t = 300.2. Any ideas?

Well, the problem can be restated as follows: you know the value of p at 501 evenly spaced points in time and you want to use this to infer a value for p at some intermediate point. You solve problems like this using an interpolation of some type. Matlab has a range of commands with which you can generate interpolations; since your problem is one-dimensional you'll probably want to use the interp1 command. Type the following and see where Matlab leads you.

Code:
doc interp1
 
I understand your response, shoehorn, though it is not exactly what I am looking for. Basically I'm looking for the simplest way to arrive at the result of:

p = 1.1:0.1:10;
t = 16:1.5:150;

for i = 1:length(t)
if t(i) == 53.5
ival = i;
break
end
end

t(ival)
p(ival)
 
p = 1.1:0.1:10;
t = 16:1.5:150;
p(t==53.5)
 
AWESOME! Thanks.
 
What do you mean by corresponds to? Since 5 is the 5th element of t, putting p(t==5, 2) gives 9 since that is the 5th element of the 2nd column. What would you like the output to be?
 
Yea, I figured it out (which is why I removed my post). The example I had given above was different than what I was running on my machine. I discovered my "t" vector, for the simulation I was running on my computer, had machine epsilon in it. If I did p(t>5-eps & t<5+eps,2) it worked. Sorry for the confusion.
 

Similar threads

Replies
4
Views
1K
Replies
1
Views
2K
Replies
2
Views
2K
Replies
2
Views
2K
Replies
5
Views
3K
Replies
16
Views
14K
Replies
11
Views
3K
Back
Top