MATLAB vector value location ID

  • Context: MATLAB 
  • Thread starter Thread starter DoubleHubble
  • Start date Start date
  • Tags Tags
    Matlab Value Vector
Click For Summary
SUMMARY

The discussion focuses on extracting the value of a dependent vector, p, at a specific time, t = 300.2, using MATLAB. The primary solution involves utilizing the interp1 command for one-dimensional interpolation. A user also shared a method to find the index of a specific time value in the vector t, demonstrating the use of logical indexing to retrieve corresponding values from p. The conversation highlights the importance of handling floating-point precision issues in MATLAB when working with time vectors.

PREREQUISITES
  • Familiarity with MATLAB programming environment
  • Understanding of vector operations in MATLAB
  • Knowledge of interpolation techniques, specifically interp1
  • Awareness of floating-point precision issues in numerical computing
NEXT STEPS
  • Explore MATLAB's interp1 documentation for various interpolation methods
  • Learn about handling floating-point precision issues in MATLAB
  • Investigate other interpolation functions such as interp2 for multi-dimensional data
  • Practice vector indexing and logical operations in MATLAB for data extraction
USEFUL FOR

This discussion is beneficial for MATLAB users, data analysts, and engineers who need to perform interpolation and data extraction from vectors in their simulations or analyses.

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 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 4 ·
Replies
4
Views
942
  • · Replies 16 ·
Replies
16
Views
15K
  • · Replies 8 ·
Replies
8
Views
3K