Interpolate 3D Matrix based on frequency values

1 回表示 (過去 30 日間)
Lokeshwaran
Lokeshwaran 2012 年 11 月 14 日
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.

採用された回答

Matt J
Matt J 2012 年 11 月 14 日
use the PERMUTE command to make the array dimensions c x a. Then just use interp1, e.g.,
interp1(frequencies, Matrix_cxa, 250);
  2 件のコメント
Lokeshwaran
Lokeshwaran 2012 年 11 月 14 日
Thank you very much for your answer. But can you make it clear with an example please?
Matt J
Matt J 2012 年 11 月 14 日
編集済み: Matt J 2012 年 11 月 14 日
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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by