An error at modulation process
2 views (last 30 days)
Show older comments
[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
0 Comments
Accepted Answer
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.
0 Comments
More Answers (10)
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
0 Comments
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.
0 Comments
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
0 Comments
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.
0 Comments
See Also
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!