How to find wavelength or wavenumber from signal? (MATLAB)

19 views (last 30 days)
Hello
I am working on my master thesis and it is connected with signal processing.
I have a numerical model of plate in which i have got an extortion as a 5 periodic sin wave.
I have collected displacements in Y direction from all points on surface of my plate (400 points) in one time increment. I put it into Matlab as a vector:
data = load('jednachw100.txt');
data=reshape(data,[],1);
y=fft2(data);
plot(abs(fft(data)));
and i have recived something like this:
In x axis i have my all sampling points which is 400(all nodes from surface of plate). My task is to get a wavenumber in x-axis but i can't do this.
Thaks for help in advance.

Answers (2)

Walter Roberson
Walter Roberson on 18 Sep 2015
Untested
numpoint = length(data);
curtick = get(gca, 'XTick');
lefthalf = curtick(curtick <= numpoint/2);
leftwaveL = numpoint ./ (lefthalf - 1);
righthalf = curtick(curtick > numpoint/2);
rightwaveL = numpoint ./ (numpoint - righthalf + 1);
waveL = [leftwaveL(:); rightwaveL(:)];
ticklab = cellstr(str2num(waveL));
set(gca, 'xticklabel', ticklab);
  20 Comments
Walter Roberson
Walter Roberson on 20 Sep 2015
I do not see the txt file attached. After you select a file, you have to click to Attach File.
Michal G
Michal G on 20 Sep 2015
I can't add any more files today:( i sent yopu a private message with my vector.

Sign in to comment.


mm99
mm99 on 27 Dec 2019
Hi!
I am doing similar thing, but have some trouble with sine extortion. I get an error: "Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-101." This 1-by-1 is the point in which I want the sine to start and 1-by-101 is this sine with hann window. Do you maybe know what is wrong ?
Thanks in advance!

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!