It's magic. R2017a gives a different result from R2016a/b with the following simple code...
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shogo Muramatsu
am 10 Apr. 2017
Beantwortet: Prerana Paravastu
am 20 Nov. 2017
R2017a gives a different result from R2016a/b with the following code:
I = magic(16); H = magic(4); imfilter(I,H,'circular')
Has the implementation of imfilter been changed?
It is a huge problem for me.
4 Kommentare
Akzeptierte Antwort
Walter Roberson
am 10 Apr. 2017
Yes, the implementation did change; I do not see any release notes saying so, though.
I see in R2016b that non-separable filters have two branches: filterSingle2DWithConv() for single(), and filterPartOrWhole() for everything else. filterPartOrWhole() calls mex routines to do the work. You are using double(), so you would get the "everything else" mex routines.
I see in R2017a that non-separable filters have three branches: filterDouble2DWithConv() for double() for 2D arrays; filterDouble2DWithConv() (same routine) for double() with 3D arrays; and filterPartOrWhole() otherwise. (Notice filterSingle2DWithConv is gone and handled by filterPartOrWhole() now.) You are using double(), so you get the new filterDouble2DWithConv() routine. It calls upon conv2() to do the work.
I think you would be justified in filing a bug report on this.
4 Kommentare
Weitere Antworten (3)
Siehe auch
Kategorien
Mehr zu Signal Processing Toolbox finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!