Question

I am trying to create a swept-frequency cosine, and I want to be able to set the phase as I please. I tried that code, but I get an error. I want to create a vector mat(1:40), where I can manually set its phase.

Fs = 32000;                %Sampling Frequency 
t = 0: 1/Fs: 10 -1/Fs;     %Time 
tt = 10;                   %Time when the chance occurs 
f1 = 20;                   %Starting Frequency 
f2 = 250;                  %Ending Frequency 
cosineph = zeros(1,40);    %Phase of cosines

for iMat= 1:40

   k=iMat/2;   
   mat(iMat) = chirp(t,k*f1,tt,k*f2,'linear',cosineph(iMat)); 

end

The error that I am getting is " In an assignment A(I) = B, the number of elements in B and I must be the same."

Now, I am guessing it refers to variable t, so I tried implementing that into an embedded for, but didn't get the results I wanted.

Any advice?

Thanks

Was it helpful?

Solution

You are attempting to assign a vector (the output of chirp) to a single element of a matrix (mat). This won't work. You could use a cell array instead. In the example below I've replaced mat with a cell array, outArray.

Fs = 32000;                %Sampling Frequency 
t = 0: 1/Fs: 10 -1/Fs;     %Time 
tt = 10;                   %Time when the chance occurs 
f1 = 20;                   %Starting Frequency 
f2 = 250;                  %Ending Frequency 
cosineph = zeros(1,40);    %Phase of cosines

for iMat= 1:40

   k=iMat/2;   
   outArray{iMat} = chirp(t,k*f1,tt,k*f2,'linear',cosineph(iMat)); 

end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top