How to calculate the value of (x) on xaxis in MATLAB ?

2 visualizzazioni (ultimi 30 giorni)
I have this code in Matlab.
% Clear workspace.
clear
% Clear command window.
clc
% Close all windows.
close all
% Define the parameters.
pt1 = 2 ;
pt2 = 3.954 ;
h = 0.4 ; % wave length
dx = 1 ;
z = 30 ;
N = 10 ; % No.of samples
% Imaginary part.
j = sqrt( -1 ) ;
% Initialize the vector to store the values.
c = zeros(1, 20);
% Make for loop.
for L = 1: N
a1 = exp( j*( 2*pi/h ) * ( (L-1)*dx ) *( pt1/z ) ) ;
a2 = exp( j*( 2*pi /h ) *( (L-1)*dx ) *( pt2/z ) ) ;
c(L) = a1 + a2 ;
end
% Compute FFT.
Y = fft(c,256);
% Compute Magnitude FFT
Y1 = abs(Y);
We can see in the attached picture the value of (x=44) and so on......
My question is: What is the relationship or mathematical formula that I can use to calculate the value of (x) ?
I don't care, I just need to know the mathematical formula or equation used to calculate the value of (x)?

Risposte (2)

the cyclist
the cyclist il 30 Gen 2024
How, specifically, do you want to define that point? It is not the highest peak, which is at index=85 (as shown in the last line of code I added, at the end of yours).
You could perhaps use the findpeaks function.
% Define the parameters.
pt1 = 2 ;
pt2 = 3.954 ;
h = 0.4 ; % wave length
dx = 1 ;
z = 30 ;
N = 10 ; % No.of samples
% Imaginary part.
j = sqrt( -1 ) ;
% Initialize the vector to store the values.
X = zeros(1, 20);
% Make for loop.
for L = 1: N
x1 = exp( j*( 2*pi/h ) * ( (L-1)*dx ) *( pt1/z ) ) ;
x2 = exp( j*( 2*pi /h ) *( (L-1)*dx ) *( pt2/z ) ) ;
X(L) = x1 + x2 ;
end
% Compute FFT.
Y = fft(X,256);
% Compute Magnitude FFT
Y1 = abs(Y);
% Plot it
plot(Y1)
% Max value of Y1, and its index
[maxY1,indexOfMaxY1] = max(Y1)
maxY1 = 10.3835
indexOfMaxY1 = 85
  6 Commenti
the cyclist
the cyclist il 30 Gen 2024
It is not a mathematical formula. MATLAB is telling you that are hovering over the 44th value of Y1.
Look at this code, and my screenshot of the figure when I run it locally:
plot([5 5 8 5 5 5])
When I hover over that top data point, MATLAB reports (3,8).
There is no mathematical formula. Rather, when I use the shorthand
plot([5 5 8 5 5 5])
MATLAB is implicitly plotting
plot([1 2 3 4 5 6],[5 5 8 5 5 5 ])
So, when I hover over the point that has y=8, it tells me (x,y) = (3,8). It is using that implicit value of x. There is no mathematical formula.
Steven Lord
Steven Lord il 30 Gen 2024
@the cyclist is correct. From the part of the Description section on the plot documentation page where it explains the plot(Y) syntax: "If Y is a vector, the x-coordinates range from 1 to length(Y)."
If you have X data associated with the Y data, call plot with two input arguments. If you do, the scale of the X axis (and the data tips) will reflect the X data you specified in your plot call. Compare:
x = [0 1.5 2 6 9];
y = x.^2;
figure
plot(y, 'o-')
% Horizontal lines at the values in x WILL NOT line up with the points
xline(x, 'r')
title('Y data alone -- X coordinates are 1:length(Y)')
figure
plot(x, y, 'o-')
% Horizontal lines at the values in x WILL line up with the points
xline(x, 'r')
title('X and Y data -- X coordinates are from the variable x')

Accedi per commentare.


Walter Roberson
Walter Roberson il 30 Gen 2024
Q = @(v) sym(v);
pt1 = Q(2) ;
pt2 = Q(3.954) ;
h = Q(0.4) ; % wave length
dx = Q(1) ;
z = Q(30) ;
syms L
x1 = exp( j*( 2*pi/h ) * ( (L-1)*dx ) *( pt1/z ) ) ;
x2 = exp( j*( 2*pi /h ) *( (L-1)*dx ) *( pt2/z ) ) ;
x = x1 + x2;
Y = fourier(x)
Y = 
Y1 = abs(Y)
Y1 = 
This has two instanteneous peaks, one at pi/3 and the other at 659pi/1000
  1 Commento
Muhammad Salem
Muhammad Salem il 30 Gen 2024
I mean the value of x in the picture
I need the mathematical formula that Matlab uses to give me the value of x=44?

Accedi per commentare.

Tag

Prodotti


Release

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by