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

20 次查看(过去 30 天)
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.

回答(2 个)

Walter Roberson
Walter Roberson 2015-9-18
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 个评论
Walter Roberson
Walter Roberson 2015-9-20
I do not see the txt file attached. After you select a file, you have to click to Attach File.
Michal G
Michal G 2015-9-20
I can't add any more files today:( i sent yopu a private message with my vector.

请先登录,再进行评论。


mm99
mm99 2019-12-27
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!

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by