error + matrix dimension must agree

I got error -- Error using + Matrix dimensions must agree.
on this code. Please help me
a=sign(X(ind1)).*(abs(X(ind1))-T);
b=abs(X);
c=plus(a,b);

 采纳的回答

Mischa Kim
Mischa Kim 2014-3-16
编辑:Mischa Kim 2014-3-16
Nik, X and T need to be same-sized vectors unless T is a scalar.
What are you trying to do in
a = sign(X(ind1)).*(abs(X(ind1))-T);
especially w.r.t. T?

3 个评论

i'm trying to add the hard threshold with soft threshold value. the original hard threshold func is:
function op=hthresh(X,T);
ind=find(abs(X)<=T);
X(ind)=0;
op=X;
and the soft threshold is:
function op=sthresh(X,T);
ind=find(abs(X)<=T);
ind1=find(abs(X)>T);
X(ind)=0;
X(ind1)=sign(X(ind1)).*(abs(X(ind1))-T);
op=X;
now, im trying to get the average of absolute value of this 2 function:
function op=avthresh(X,T);
a=sign(X(ind1)).*(abs(X(ind1))-T);
b=abs(X);
c=plus(a,b);
d= abs(c);
X(ind1)= d/2;
op=X;
which I got error matrix dimension must agree.
Then, I change it to this one, it works but then the image and PSNR value is very bad..
function op=avthresh(X,T);
a=sign(X(ind1)).*(abs(X(ind1))-T);
b=numel(a);
c=abs(X);
d=numel(c);
e=plus(b,d);
f=abs(e/2);
X(ind1)=f;
op=X;
seek for your advice.. tq in advance
What are the sizes of X and T? Is T a scalar?
Sir Mischa, T is:
M=size(pic,1)^2;
T=sig*sqrt(2*log(M));
while X is the wavelet coefficient value. TQVM.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Mathematics 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by