Filter löschen
Filter löschen

how to deconvolute a matrix?

20 Ansichten (letzte 30 Tage)
Rabih Sokhen
Rabih Sokhen am 4 Feb. 2022
Kommentiert: Walter Roberson am 8 Feb. 2022
hy guys,
i would like to deconvolute a matrix but i didn't find a 2d deconvolution function , any idea how to do that without using fft or ifft?
thank you in advance
code:
clear all
clc
a=randi(2,3)
b=randi(2,3)
c=conv2(a,b)
% [d,r]=deconv2(c,a) this is what i would like to get
subplot(221)
img(a)
subplot(222)
img(b)
subplot(223)
img(c)
subplot(224)
img(d)

Akzeptierte Antwort

Matt J
Matt J am 4 Feb. 2022
Using
a=randi(2,3);
b=randi(2,3)
b = 3×3
2 1 2 2 2 1 2 1 1
c=conv2(a,b);
M=func2mat(@(x) conv2(a,x), zeros(3));
b_recon=reshape(M\c(:), 3,3)
b_recon = 3×3
2.0000 1.0000 2.0000 2.0000 2.0000 1.0000 2.0000 1.0000 1.0000
  14 Kommentare
Matt J
Matt J am 8 Feb. 2022
Bearbeitet: Matt J am 8 Feb. 2022
By generating c in a completely random manner c=rand(2*n-1,2*m-1), there is no gaurantee that it is the result of a convolution. The solution you are getting with M_a\c(:) is, however, the best estimate for b in the least squares sense.
Rabih Sokhen
Rabih Sokhen am 8 Feb. 2022
I really appreciate your help.
Thanks you a lot

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Matt J
Matt J am 8 Feb. 2022
Bearbeitet: Matt J am 8 Feb. 2022
I would like to deconvolute a matrix but i didn't find a 2d deconvolution function.
See deconvreg(), deconvlucy(), deconvblind(), and deconvwnr().

Walter Roberson
Walter Roberson am 8 Feb. 2022
Bearbeitet: Walter Roberson am 8 Feb. 2022
https://www.mathworks.com/matlabcentral/answers/1620780-convolve-text-with-image#comment_1953810 shows an implementation for the case of it really only being 1d convolution
  2 Kommentare
Rabih Sokhen
Rabih Sokhen am 8 Feb. 2022
hy Walter , hope your doing well
I have seen your link, I don't have a strong background in Matlab, I have understood the global idea of it but not the entire script.
Matt already helped me alot and he did wrote me a great function, however i still have same error wen i try to deconvolute a array as in the folowing exemlple:
can you modify my code if that's possible?
code:
clear all
clc
a=rand(10,3);
b=rand(10,3);
[m,n]=size(a);
M=func2mat(@(x) conv2(a,x), zeros(m,n) );
c=reshape(M\b(:), m,n);
error
Error using \
Matrix dimensions must agree.
Walter Roberson
Walter Roberson am 8 Feb. 2022
That is Matt's code, not mine; explanation should come from him.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by