Hello; Can someone please help me matlab doesn't plot my excel data it show the axis only I am trying to make spectral analysis.i have attested the excel file and code as well.

2 visualizzazioni (ultimi 30 giorni)
filename = 'datacollect2.xlsx';
N = length(filename);
fs = 400;
fnyquest = fs/2;
num = xlsread(filename);
y = num(: ,2);
mags = abs(fft(y));
bin_vals = [0 : N-1];
fax_Hz = bin_vals*fs/N;
N_2 = ceil(N/2);
plot(mags(1:N_2),fax_hz(1:N_2))
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)');
axis tight
  5 Commenti
arif hussain
arif hussain il 16 Mag 2017
yes the axis is appeared its empty but when I removed this line (fax_hz(1:N_2)) from the plot command its shows the complete spectral. No there is no any error.

Accedi per commentare.

Risposta accettata

dpb
dpb il 15 Mag 2017
Modificato: dpb il 15 Mag 2017
filename = 'datacollect2.xlsx';
N = length(filename);
fs = 400;
fnyquest = fs/2;
num = xlsread(filename);
y = num(: ,2);
mags = abs(fft(y));
bin_vals = [0 : N-1];
Probably biggest problem is you've used the length of the filename as the length of the data. The file name is just that; the string containing the name of the file on the disk, it has nothing whatsoever to do with the data contained in the file.
Here,
>> filename = 'datacollect2.xlsx';
N = length(filename)
N =
17
>>
so all you've plotted are the first 9 points out of the arrays; not much at all... :)
N = length(y);
after you've defined y will undoubtedly help a lot, particularly when you get the roles of X,Y corrected in the plot statement.
You may want to also plot 2*abs(fft(y))/N to normalize the spectrum amplitude to input. See
doc fft % example there shows some other details as well
  3 Commenti
arif hussain
arif hussain il 16 Mag 2017
Modificato: dpb il 16 Mag 2017
i dont think so this is accurate spectrum may be something wrong here.data file and code attested below.
filename = 'datacollect2.xlsx';
num = xlsread(filename);
fs = 400;
x = num(:,1);
N = length(x);
y = num(: ,2);
mags = abs(fft(y));
bin_vals = [0 : N-1];
fax_Hz = bin_vals*fs/N;
N_2 = ceil(N/2);
plot(mags(1:N_2),fax_Hz(1:N_2))
dpb
dpb il 16 Mag 2017
Modificato: dpb il 17 Mag 2017
You're still using the spectrum magnitude as the independent variable in the PLOT() call. WHY???
Also, you've taken the amplitude normalization out. WHY?
I would again refer you back to the example at
doc fft

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by