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

40 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!

Community Treasure Hunt

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

Start Hunting!