Interpolate 3D Matrix based on frequency values

2 visualizzazioni (ultimi 30 giorni)
I am using m file for post processing of FEA(Finite Element Analysis) results derived from another software.
In this case I have a (a*1*c) matrix which has to be interpolated based on the third dimension 'c' . In the definition of the matrix dimension, I have assigned the dimension 'c' as just numbers starting from 1 upto the required size.
But the problem now is that the third dimension 'c' is a frequency value ( eg: 100 Hz, 300 Hz, 700 Hz, etc). I have to interpolate the (a*1) values based on the user input frequency (eg: for 250 Hz).
Again this has to be done for a number of values, which I guess can be accomplished with the help of a loop. I have the frequency values defining the dimension 'c' and the user input as a array.
Can anyone help me out with this?
Thank you very much for your time and patience.

Risposta accettata

Matt J
Matt J il 14 Nov 2012
use the PERMUTE command to make the array dimensions c x a. Then just use interp1, e.g.,
interp1(frequencies, Matrix_cxa, 250);
  2 Commenti
Lokeshwaran
Lokeshwaran il 14 Nov 2012
Thank you very much for your answer. But can you make it clear with an example please?
Matt J
Matt J il 14 Nov 2012
Modificato: Matt J il 14 Nov 2012
OK. So if you want to interpolate the matrix A below at "row 2.5", you would do
>> A=[4 5 6; 7 8 9; 10 11 12]'
A =
4 7 10
5 8 11
6 9 12
>> interp1([1;2;3],A, 2.5)
ans =
5.5000 8.5000 11.5000

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by