Replacing valuees in a matrix

1 Ansicht (letzte 30 Tage)
Dominika
Dominika am 19 Mär. 2014
Beantwortet: Dominika am 20 Mär. 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

Akzeptierte Antwort

Joseph Cheng
Joseph Cheng am 19 Mär. 2014
Bearbeitet: Joseph Cheng am 19 Mär. 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);
  1 Kommentar
Joseph Cheng
Joseph Cheng am 19 Mär. 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);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Dominika
Dominika am 20 Mär. 2014
Thank you!

Community Treasure Hunt

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

Start Hunting!

Translated by