An error at modulation process

2 views (last 30 days)
emre
emre on 7 Apr 2012
[sound,fs]=wavread('sesdeneme.wav');
fn1 = [10/(7000), 700/(7000)];
[b1,a1] = butter(10, fn1, 'bandpass');
y1=filter(b1, a1, sound);
envelope1 = abs(hilbert(y1));
t=0:0.001:1;
car1=5*cos(2.*pi.*350.*t);
mod1=envelope1.*car1;
plot(t,mod1);grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
i am trying to product envelope1 and car1 but i get this error:
??? Error using ==> times
Matrix dimensions must agree.
Error in ==> implantsonhali at 60
mod1=envelope1.*car1;
Can anyone please help me? :) ty

Accepted Answer

Wayne King
Wayne King on 8 Apr 2012
You must not be executing this line
sound = sound(:,1);
sound must be 118784x1, NOT 118784x2
clear everything in your workspace
>>clear all
Then
[sound,fs]=wavread('sesdeneme.wav');
sound = sound(:,1);
fn1 = [10/(7000), 700/(7000)];
[b1,a1] = butter(10, fn1, 'bandpass');
y1=filter(b1, a1, sound);
envelope1 = abs(hilbert(y1));
t=0:1/fs:(length(y1)*1/fs)-1/fs;
car1=(5*cos(2.*pi.*350.*t))';
mod1=envelope1.*car1;
fn2 = [700/(7000), 1500/(7000)];
[b2,a2] = butter(10, fn2, 'bandpass');
y2=filter(b2, a2, sound);
envelope2 = abs(hilbert(y2));
mod2=envelope2.*car1;
plot(t,mod1);grid on,figure;plot(t,mod2);grid on
Just copy and paste what I have given you. After you clear everything.

More Answers (10)

Wayne King
Wayne King on 8 Apr 2012
You have a two-channel recording, do this:
[sound,fs]=wavread('sesdeneme.wav');
sound = sound(:,1);
fn1 = [10/(7000), 700/(7000)];
[b1,a1] = butter(10, fn1, 'bandpass');
y1=filter(b1, a1, sound);
envelope1 = abs(hilbert(y1));
t=0:1/fs:(length(y1)*1/fs)-1/fs;
car1=(5*cos(2.*pi.*350.*t))';
mod1=envelope1.*car1;
plot(t,mod1);grid on

Honglei Chen
Honglei Chen on 7 Apr 2012
It seems taht your evelope1 is derived from the input sound, while your car1 has the dimension of t, so the two don't match in size.

emre
emre on 8 Apr 2012
thank you,but how can i solve this problem,any ideas?

Wayne King
Wayne King on 8 Apr 2012
[sound,fs]=wavread('sesdeneme.wav');
fn1 = [10/(7000), 700/(7000)];
[b1,a1] = butter(10, fn1, 'bandpass');
y1=filter(b1, a1, sound);
envelope1 = abs(hilbert(y1));
t=0:1/fs:(length(y1)*1/fs)-1/fs;
if iscolumn(envelope1)
t = t(:);
end
car1=5*cos(2.*pi.*350.*t);
mod1=envelope1.*car1;
plot(t,mod1);grid on

emre
emre on 8 Apr 2012
thx Wayne but now i get this error:
??? Undefined function or method 'iscolumn' for input arguments of type 'double'.

Wayne King
Wayne King on 8 Apr 2012
You must not have a version with iscolumn(). That's fine, you don't need that, I just put that in in case the output of filter() is a column vector.
Just make sure that car1 and envelope1 are both row or column vectors
Enter
>>whos envelope1
if it is column vector, then use
t = t(:);
and you'll be fine.

emre
emre on 8 Apr 2012
sorry again,when i type it i get this:
Name Size Bytes Class Attributes
envelope1 118784x2 1900544 double
i couldnt understand if it is column or row vector so i tried writing t=t(:); but i get same matrix dimension error.
Tried not to write anything,but still get the dimension error :(

emre
emre on 8 Apr 2012
thank you Wayne,this is really working but,ş have a last question
when i try to do this more than once,i get the dimension error again.i mean:
[sound,fs]=wavread('sesdeneme.wav');
sound = sound(:,1);
fn1 = [10/(7000), 700/(7000)];
[b1,a1] = butter(10, fn1, 'bandpass');
y1=filter(b1, a1, sound);
envelope1 = abs(hilbert(y1));
t=0:1/fs:(length(y1)*1/fs)-1/fs;
car1=(5*cos(2.*pi.*350.*t))';
mod1=envelope1.*car1;
fn2 = [700/(7000), 1500/(7000)];
[b2,a2] = butter(10, fn2, 'bandpass');
y2=filter(b2, a2, sound);
envelope2 = abs(hilbert(y2));
t=0:1/fs:(length(y2)*1/fs)-1/fs;
car2=(5*cos(2.*pi.*350.*t))';
mod2=envelope2.*car2;
plot(t,mod1);grid on,figure;plot(t,mod2);grid on
same error agian when i do this :(
  1 Comment
Wayne King
Wayne King on 8 Apr 2012
tell me what
>>whos y1
>>whos y2
>>whos car1
gives

Sign in to comment.


emre
emre on 8 Apr 2012
Name Size Bytes Class Attributes
y1 118784x2 1900544 double
Name Size Bytes Class Attributes
y2 118784x2 1900544 double
Name Size Bytes Class Attributes
car1 118784x1 950272 double
I can give my original code if you want.i am writing there summary of it but maybe i am missing smt.

emre
emre on 8 Apr 2012
thx for all :)

Categories

Find more on Install Products in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!