Reply by maury October 18, 20102010-10-18
On Oct 18, 2:21&#4294967295;pm, Tim Wescott <t...@seemywebsite.com> wrote:
> On 10/18/2010 11:49 AM, maury wrote: > > > > > > > On Oct 18, 10:32 am, Tim Wescott<t...@seemywebsite.com> &#4294967295;wrote: > >> On 10/18/2010 04:33 AM, ellie wrote: > > >>> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > >>> autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > >>> n(number of samples taken)=200. I also need to plot it. > >>> Input: > >>> x= sin((2.*pi.*n)./5); > > >>> I have the following but I get error in MATLAB : > > >>> size=1:length(n) > >>> &#4294967295; &#4294967295; &#4294967295; for &#4294967295;i=0:size > > >>> for j=1:size-i > >>> &#4294967295; &#4294967295; &#4294967295; rxx=sum(x3(j).*x3(j+i)); > >>> end > > >>> &#4294967295; &#4294967295; &#4294967295; end > > >> As mentioned, if you're getting an error it's exceedingly helpful to > >> share it. &#4294967295;In this case, though, I'm pretty sure that the error is > >> something about a type mismatch, or the 'size' variable not being right > >> or whatever. > > >> I see three errors in your code: > > >> First, 'size' is (if I'm not mistaken) the name of a function in Matlab. > >> &#4294967295; &#4294967295;I'm not entirely sure, but I think that by assigning > > >> size = 1:length(n) > > >> you are either redefining 'size' as an array, or you're trying to shove > >> a value where a value can't be shoved -- without knowing the error that > >> Matlab is giving you, I can't say. > > >> Second, assuming that size is now a vector, the line > > >> &#4294967295; &#4294967295; for i=0:size > > >> will make Matlab cranky. &#4294967295;You can't say (scaler):(vector) in Matlab. > >> You can only say (scaler):(scaler), and the answer is a vector. > > >> Third, for j=1:size-i -- same problem. > > >> Try again, read the error messages, see if you can figure out what > >> you've done wrong from the error messages, and if you do post questions > >> _include_ the error messages. > > >> -- > > >> Tim Wescott > >> Wescott Design Serviceshttp://www.wescottdesign.com > > >> Do you need to implement control loops in software? > >> "Applied Control Theory for Embedded Systems" was written for you. > >> See details athttp://www.wescottdesign.com/actfes/actfes.html-Hide quoted text - > > >> - Show quoted text - > > > Tim, > > Although (s)he has the correct format for the _for_ loops, (her)his > > problem really is not having an understanding of Matlab. > > For example, the vector x needs to be of the form x = sin(2*pi*f*t), > > where f is the frequency of the sinusoid, and t is a time vector. If > > (s)he wants _n_ elements in the sin vector, then (s)he needs to have > > somethinbg like t = 0:1/fs:n-1/fs, where fs is the sample frequency. > > he dosen't need the .* or ./ notation. > > > Ellie, go read the manual! > > > But, the basic problem is not learning Matlab. > > The _format_ is correct, but unless I've forgotten all my Matlab basics > (I'm a Scilab user) saying "0:size" when size is a vector will mess you > up. &#4294967295;Saying "for n = size" when size is a vector is perfectly all right. > > I'm suspecting that (s)he has jumped from the math book to Matlab too > soon, but that's me. > > -- > > Tim Wescott > Wescott Design Serviceshttp://www.wescottdesign.com > > Do you need to implement control loops in software? > "Applied Control Theory for Embedded Systems" was written for you. > See details athttp://www.wescottdesign.com/actfes/actfes.html- Hide quoted text - > > - Show quoted text -
You're absolutly right Tim, I missed that (s)he made size a nth-order vector.
Reply by Tim Wescott October 18, 20102010-10-18
On 10/18/2010 12:03 PM, maury wrote:
> On Oct 18, 6:33 am, "ellie"<elnaz_am@n_o_s_p_a_m.hotmail.com> wrote: >> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized >> autocorrelation of a sinusoidal signal that is sampled at 1000Hz and >> n(number of samples taken)=200. I also need to plot it. >> Input: >> x= sin((2.*pi.*n)./5); >> >> I have the following but I get error in MATLAB : >> >> size=1:length(n) >> for i=0:size >> >> for j=1:size-i >> rxx=sum(x3(j).*x3(j+i)); >> end >> >> end >> >> Thank you. > > Ellie, > I don't want you to get the idea that my previous post listed all your > problems. You need to review your code logic and the autocorrelation > function. You also have at least 2 other basic Matlab problems.
A suggestion: start really small. Like, make a few "for" loops and see how to make them work. Try a for loop that'll step through 0, 1, 2, .... Then one that'll step through -10,-1,8,17 (how am I doing that?). Then one that'll step through an arbitrary vector of numbers. Go from there. Put things together in teeny bits. Test each bit. HTH. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by Tim Wescott October 18, 20102010-10-18
On 10/18/2010 11:49 AM, maury wrote:
> On Oct 18, 10:32 am, Tim Wescott<t...@seemywebsite.com> wrote: >> On 10/18/2010 04:33 AM, ellie wrote: >> >> >> >> >> >>> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized >>> autocorrelation of a sinusoidal signal that is sampled at 1000Hz and >>> n(number of samples taken)=200. I also need to plot it. >>> Input: >>> x= sin((2.*pi.*n)./5); >> >>> I have the following but I get error in MATLAB : >> >>> size=1:length(n) >>> for i=0:size >> >>> for j=1:size-i >>> rxx=sum(x3(j).*x3(j+i)); >>> end >> >>> end >> >> As mentioned, if you're getting an error it's exceedingly helpful to >> share it. In this case, though, I'm pretty sure that the error is >> something about a type mismatch, or the 'size' variable not being right >> or whatever. >> >> I see three errors in your code: >> >> First, 'size' is (if I'm not mistaken) the name of a function in Matlab. >> I'm not entirely sure, but I think that by assigning >> >> size = 1:length(n) >> >> you are either redefining 'size' as an array, or you're trying to shove >> a value where a value can't be shoved -- without knowing the error that >> Matlab is giving you, I can't say. >> >> Second, assuming that size is now a vector, the line >> >> for i=0:size >> >> will make Matlab cranky. You can't say (scaler):(vector) in Matlab. >> You can only say (scaler):(scaler), and the answer is a vector. >> >> Third, for j=1:size-i -- same problem. >> >> Try again, read the error messages, see if you can figure out what >> you've done wrong from the error messages, and if you do post questions >> _include_ the error messages. >> >> -- >> >> Tim Wescott >> Wescott Design Serviceshttp://www.wescottdesign.com >> >> Do you need to implement control loops in software? >> "Applied Control Theory for Embedded Systems" was written for you. >> See details athttp://www.wescottdesign.com/actfes/actfes.html- Hide quoted text - >> >> - Show quoted text - > > Tim, > Although (s)he has the correct format for the _for_ loops, (her)his > problem really is not having an understanding of Matlab. > For example, the vector x needs to be of the form x = sin(2*pi*f*t), > where f is the frequency of the sinusoid, and t is a time vector. If > (s)he wants _n_ elements in the sin vector, then (s)he needs to have > somethinbg like t = 0:1/fs:n-1/fs, where fs is the sample frequency. > he dosen't need the .* or ./ notation. > > Ellie, go read the manual! > > But, the basic problem is not learning Matlab.
The _format_ is correct, but unless I've forgotten all my Matlab basics (I'm a Scilab user) saying "0:size" when size is a vector will mess you up. Saying "for n = size" when size is a vector is perfectly all right. I'm suspecting that (s)he has jumped from the math book to Matlab too soon, but that's me. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by maury October 18, 20102010-10-18
On Oct 18, 6:33&#4294967295;am, "ellie" <elnaz_am@n_o_s_p_a_m.hotmail.com> wrote:
> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > n(number of samples taken)=200. I also need to plot it. > Input: > x= sin((2.*pi.*n)./5); > > I have the following but I get error in MATLAB : > > size=1:length(n) > &#4294967295; &#4294967295; for &#4294967295;i=0:size > > for j=1:size-i > &#4294967295; &#4294967295; rxx=sum(x3(j).*x3(j+i)); > end > > &#4294967295; &#4294967295; end > > Thank you.
Ellie, I don't want you to get the idea that my previous post listed all your problems. You need to review your code logic and the autocorrelation function. You also have at least 2 other basic Matlab problems. Maurice Givens
Reply by maury October 18, 20102010-10-18
On Oct 18, 10:32&#4294967295;am, Tim Wescott <t...@seemywebsite.com> wrote:
> On 10/18/2010 04:33 AM, ellie wrote: > > > > > > > Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > > autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > > n(number of samples taken)=200. I also need to plot it. > > Input: > > x= sin((2.*pi.*n)./5); > > > I have the following but I get error in MATLAB : > > > size=1:length(n) > > &#4294967295; &#4294967295; &#4294967295;for &#4294967295;i=0:size > > > for j=1:size-i > > &#4294967295; &#4294967295; &#4294967295;rxx=sum(x3(j).*x3(j+i)); > > end > > > &#4294967295; &#4294967295; &#4294967295;end > > As mentioned, if you're getting an error it's exceedingly helpful to > share it. &#4294967295;In this case, though, I'm pretty sure that the error is > something about a type mismatch, or the 'size' variable not being right > or whatever. > > I see three errors in your code: > > First, 'size' is (if I'm not mistaken) the name of a function in Matlab. > &#4294967295; I'm not entirely sure, but I think that by assigning > > size = 1:length(n) > > you are either redefining 'size' as an array, or you're trying to shove > a value where a value can't be shoved -- without knowing the error that > Matlab is giving you, I can't say. > > Second, assuming that size is now a vector, the line > > &#4294967295; &#4294967295;for i=0:size > > will make Matlab cranky. &#4294967295;You can't say (scaler):(vector) in Matlab. > You can only say (scaler):(scaler), and the answer is a vector. > > Third, for j=1:size-i -- same problem. > > Try again, read the error messages, see if you can figure out what > you've done wrong from the error messages, and if you do post questions > _include_ the error messages. > > -- > > Tim Wescott > Wescott Design Serviceshttp://www.wescottdesign.com > > Do you need to implement control loops in software? > "Applied Control Theory for Embedded Systems" was written for you. > See details athttp://www.wescottdesign.com/actfes/actfes.html- Hide quoted text - > > - Show quoted text -
Tim, Although (s)he has the correct format for the _for_ loops, (her)his problem really is not having an understanding of Matlab. For example, the vector x needs to be of the form x = sin(2*pi*f*t), where f is the frequency of the sinusoid, and t is a time vector. If (s)he wants _n_ elements in the sin vector, then (s)he needs to have somethinbg like t = 0:1/fs:n-1/fs, where fs is the sample frequency. he dosen't need the .* or ./ notation. Ellie, go read the manual! But, the basic problem is not learning Matlab. Maurice Givens
Reply by Tim Wescott October 18, 20102010-10-18
On 10/18/2010 04:33 AM, ellie wrote:
> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > n(number of samples taken)=200. I also need to plot it. > Input: > x= sin((2.*pi.*n)./5); > > > I have the following but I get error in MATLAB : > > size=1:length(n) > for i=0:size > > for j=1:size-i > rxx=sum(x3(j).*x3(j+i)); > end > > > end
As mentioned, if you're getting an error it's exceedingly helpful to share it. In this case, though, I'm pretty sure that the error is something about a type mismatch, or the 'size' variable not being right or whatever. I see three errors in your code: First, 'size' is (if I'm not mistaken) the name of a function in Matlab. I'm not entirely sure, but I think that by assigning size = 1:length(n) you are either redefining 'size' as an array, or you're trying to shove a value where a value can't be shoved -- without knowing the error that Matlab is giving you, I can't say. Second, assuming that size is now a vector, the line for i=0:size will make Matlab cranky. You can't say (scaler):(vector) in Matlab. You can only say (scaler):(scaler), and the answer is a vector. Third, for j=1:size-i -- same problem. Try again, read the error messages, see if you can figure out what you've done wrong from the error messages, and if you do post questions _include_ the error messages. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by Dirk Bell October 18, 20102010-10-18
On Oct 18, 7:33&#4294967295;am, "ellie" <elnaz_am@n_o_s_p_a_m.hotmail.com> wrote:
> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > n(number of samples taken)=200. I also need to plot it. > Input: > x= sin((2.*pi.*n)./5); > > I have the following but I get error in MATLAB : > > size=1:length(n) > &#4294967295; &#4294967295; for &#4294967295;i=0:size > > for j=1:size-i > &#4294967295; &#4294967295; rxx=sum(x3(j).*x3(j+i)); > end > > &#4294967295; &#4294967295; end > > Thank you.
Do you know what your error is? Pretty simple code to ask for help on without at least making it run first. Dirk
Reply by John October 18, 20102010-10-18
On Oct 18, 7:33&#4294967295;am, "ellie" <elnaz_am@n_o_s_p_a_m.hotmail.com> wrote:
> Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized > autocorrelation of a sinusoidal signal that is sampled at 1000Hz and > n(number of samples taken)=200. I also need to plot it. > Input: > x= sin((2.*pi.*n)./5); > > I have the following but I get error in MATLAB : > > size=1:length(n) > &#4294967295; &#4294967295; for &#4294967295;i=0:size > > for j=1:size-i > &#4294967295; &#4294967295; rxx=sum(x3(j).*x3(j+i)); > end > > &#4294967295; &#4294967295; end > > Thank you.
y = xcorr(x,x,'coeff');plot(y);
Reply by ellie October 18, 20102010-10-18
Hi, I'm looking for a "for loop" code in MATLAB to obtain the normalized
autocorrelation of a sinusoidal signal that is sampled at 1000Hz and
n(number of samples taken)=200. I also need to plot it. 
Input: 
x= sin((2.*pi.*n)./5); 


I have the following but I get error in MATLAB : 

size=1:length(n)
    for  i=0:size
      
for j=1:size-i
    rxx=sum(x3(j).*x3(j+i));
end


    end 



Thank you.