I have written this function for the sine wave that takes different values of frequency(f0)and sampling frequency(fs) Can anyone help where I am doing wrong.
Mostra commenti meno recenti
function y= sin_f(length,amplitude,Frequency,phaseShift)
N=length;
f0 =Frequency;
phi= phaseShift;
A=amplitude;
y=zeros(1,N+1);
for n=1:N+1
y(n)=A*sin(2* pi* f0 * (n-1)+ phi);
end
N=40; % Number of samples
A=1.5; % Amplitude
k=1; % for subplot
phi =pi/2; % for phase angle
fs = 44000
x=[0:1:N];
m = [0, 0.05, 0.1,0.4,0.45,0.5,0.55,0.6]
%m=[0 .1 .2 .8 .9 1 1.1 1.2];
r=floor(length(m)/2);
for i= m
f0=m
y= sin_f(N,A,f0,phi);
figure(1)
subplot(r+1,2,k);
stem(x,y);
xlabel('Time Index n');
ylabel('Amplititude');
title(m(k));
k=k+1;
end
Risposte (1)
Walter Roberson
il 29 Ott 2017
0 voti
You tried to use length as the name of a parameter and also as the function that it more commonly represents.
Your code has no comments about what sizes are expected for the parameters, and does no checking; your code just crashes for no good reason if the user passes something non-scalar.
7 Commenti
Aash
il 29 Ott 2017
Aash
il 29 Ott 2017
Walter Roberson
il 29 Ott 2017
My previous response still applies.
Aash
il 29 Ott 2017
Walter Roberson
il 29 Ott 2017
Please think about this code:
ABC = [1 4 1 4 2 1 3 5];
disp('length(ABC) is')
length(ABC)
disp('ABC([2 3 4]) is')
ABC([2 3 4])
length = [3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3];
disp('length(ABC) is')
length(ABC)
Why did length(ABC) change?
Aash
il 29 Ott 2017
Walter Roberson
il 29 Ott 2017
N is not the problem. The problem is "length". You should avoid using variable names that are the same as MATLAB functions, because you will tend to forget that they are variables at the time you need the function.
Categorie
Scopri di più su MATLAB in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!