Can we filter an int16 signal using filters FIR?
2 ビュー (過去 30 日間)
古いコメントを表示
The coefficients resulted in the design of the filter FIR are float, and when I try to filter the signal it just can't. I tried with "conv", is there a way?
Best regards, Marcelo
1 件のコメント
Jan
2014 年 1 月 1 日
What does "it just can't" explicitly mean? Pleas post the error message and define the input arguments exactly. The less we have to guess, the easier is an answer.
回答 (3 件)
Wayne King
2014 年 1 月 1 日
Jan is correct about making your post clear.
If you are using conv(), the help for conv() states that the only supported data types are:
float: double, single
So why not cast your input to double()?
conv(double(x),B)
where B are the filter coefficients.
Or better yet, use filter()
y = filter(B,1,double(x));
0 件のコメント
Jan
2014 年 1 月 1 日
編集済み: Jan
2014 年 1 月 1 日
What about converting the signal to a double temporarily?
y = int16(filter(B, A, double(YourINT16Signal)));
A C-Mex version of FILTER can be found in the file exchange and it can be adjusted to integer types. But the conversion to double seems to be the most elegant way, if it is not impeded by the memory consumption.
0 件のコメント
Sangroku
2014 年 1 月 1 日
編集済み: Sangroku
2014 年 1 月 1 日
1 件のコメント
Wayne King
2014 年 1 月 1 日
How is this at all related to your original post about filtering?
Have you tried reading the file with the 'native' option.
[s1,fs] = wavread('C:\Users\user\Desktop\ex.wav','native');
What datatype does that give s1?
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!