Quick question about elementwise
Show older comments
I have a piece of code that works without the .* and another that doesn't - can't work out why. This is the one that works
close all
clear all
fo = 4; %Frequency of the sine wave
Fs = 100; %Sampling rate
Ts = 1/Fs; %Sampling time interval
t = 0:Ts:1-Ts;
n = length(t); %Number of samples
x = 2*sin(2*pi*fo*t);
[XfreqD,freqRng] = positiveFFT(x,Fs);
stem(freqRng,abs(XfreqD));
Also, the function that one uses is here -
function[X,freq]=positiveFFT(x,Fs)
N=length(x);
k=0:N-1;
T=N/Fs;
freq=k/T; %Create the frequency range
X=fft(x)/N; %normalise the data
cutOff = ceil(N/2);
X = X(1:cutOff);
freq = freq(1:cutOff);
Then my code - the one that doesn't work is here. It's asking or .^ etc.
close all; clear all
t0=0.05;w0=600*pi;q=5;
%t=linspace(-0.1,0.1,fs);
fs = 100; %Sampling rate
Ts = 1/fs; %Sampling time interval
t = 0:Ts:1-Ts;
n = length(t); %Number of samples
x=exp(-(t/t0)^2)*cos(w0*(1-q*t)*t);
[XfreqD,freqRng] = positiveFFT(x,fs);
stem(freqRng,abs(XfreqD));
This version works - but I have no idea whether it's right or not. Is there a good way of checking?
close all; clear all t0=0.05;w0=600*pi;q=5; %t=linspace(-0.1,0.1,Fs); Fs = 100; %Sampling rate Ts = 1/Fs; %Sampling time interval t = 0:Ts:1-Ts; n = length(t); %Number of samples x=exp(-(t/t0).^2).*cos(w0*(1-q.*t).*t); [XfreqD,freqRng] = positiveFFT(x,Fs); stem(freqRng,abs(XfreqD));
3 Comments
Jan
on 26 Jan 2012
Please post a copy of the error message instead of the short "does not work". If Matlab suggests ".^", what did happend when you follow this advice?
Matt Fig
on 2 Nov 2012
I have a piece of code that works without the .* and another that doesn't - can't work out why. This is the one that works
close all
clear all
fo = 4; %Frequency of the sine wave
Fs = 100; %Sampling rate
Ts = 1/Fs; %Sampling time interval
t = 0:Ts:1-Ts;
n = length(t); %Number of samples
x = 2*sin(2*pi*fo*t);
[XfreqD,freqRng] = positiveFFT(x,Fs);
stem(freqRng,abs(XfreqD));
Also, the function that one uses is here -
function[X,freq]=positiveFFT(x,Fs)
N=length(x);
k=0:N-1;
T=N/Fs;
freq=k/T; %Create the frequency range
X=fft(x)/N; %normalise the data
cutOff = ceil(N/2);
X = X(1:cutOff);
freq = freq(1:cutOff);
Then my code - the one that doesn't work is here. It's asking or .^ etc.
close all; clear all
t0=0.05;w0=600*pi;q=5;
%t=linspace(-0.1,0.1,fs);
fs = 100; %Sampling rate
Ts = 1/fs; %Sampling time interval
t = 0:Ts:1-Ts;
n = length(t); %Number of samples
x=exp(-(t/t0)^2)*cos(w0*(1-q*t)*t);
[XfreqD,freqRng] = positiveFFT(x,fs);
stem(freqRng,abs(XfreqD));
This version works - but I have no idea whether it's right or not. Is there a good way of checking?
close all; clear all t0=0.05;w0=600*pi;q=5; %t=linspace(-0.1,0.1,Fs); Fs = 100; %Sampling rate Ts = 1/Fs; %Sampling time interval t = 0:Ts:1-Ts; n = length(t); %Number of samples x=exp(-(t/t0).^2).*cos(w0*(1-q.*t).*t); [XfreqD,freqRng] = positiveFFT(x,Fs); stem(freqRng,abs(XfreqD));
Helder Pinheiro
on 26 Jun 2022
Edited: Helder Pinheiro
on 26 Jun 2022
Accepted Answer
More Answers (0)
Categories
Find more on Mathematics in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!