# Replacing valuees in a matrix

1 view (last 30 days)
Dominika on 19 Mar 2014
Answered: Dominika on 20 Mar 2014
Hi
I need to replace values in a vector bg_correction with values from vector Sh_a_po if a condition:
Sh_a_BG <= 0.1*Sh_a_po
is satisfied (for each cell separately)
I have 3 vectors:
%%---
bg_correction =
0.1120
0.0495
0.0261
0.0158
0.0393
0.0096
Sh_a_BG =
0.0008
0.0004
0.0007
0.1698
0.1756
0.0114
Sh_a_po=
0.0495
0.0261
0.0160
0.0395
0.0096
0.0035
%if Sh_a_BG <= 0.1*Sh_a_po --> replace bg_correction with Sh_a_po
bg_correction(Sh_a_BG_po<=0.1*Sh_a_po) = Sh_a_po1;
%%
The last line doesn't work
Message at Command Window:
In an assignment A(I) = B, the number of elements in B and I must be the same.
Thanks,
Dominika

Joseph Cheng on 19 Mar 2014
Edited: Joseph Cheng on 19 Mar 2014
I would suggest use the find() function. With find you can get the index of values where it is Sh_a_BG_po<=0.1*Sh_a_po.
index = find(Sh_a_BG_po<=0.1*Sh_a_po);
bg_correction(index)=Sh_a_po1(index);
Joseph Cheng on 19 Mar 2014
additionally your original last line would work but you need to include the (Sh_a_BG_po<=0.1*Sh_a_po) on both sides of the equation.
bg_correction(Sh_a_BG_po<=0.1*Sh_a_po) = Sh_a_po1(Sh_a_BG_po<=0.1*Sh_a_po);

Dominika on 20 Mar 2014
Thank you!