Replacing valuees in a matrix

1 次查看(过去 30 天)
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
Joseph Cheng 2014-3-19
编辑:Joseph Cheng 2014-3-19
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);
  1 个评论
Joseph Cheng
Joseph Cheng 2014-3-19
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);

请先登录,再进行评论。

更多回答(1 个)

Dominika
Dominika 2014-3-20
Thank you!

类别

Help CenterFile Exchange 中查找有关 NaNs 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by