25 views (last 30 days)

Show older comments

hello everyone,

I have an array element value as in the following code and this number will keep decreasing to about 10e-6, there should be a lot up to (1x500) but I just gave a few examples with this,

is there an easy way to change it to the same number eg 0 (zero)?

So in general it is not if it is worth below 1, for example, then it is zero, not like that, but if it is worth decreasing

Thank you very much

a = [100.001469926008 0.0140073495254864 0.00452326089811489 0.00228582409151486 0.00157249586126199 0.00121055360392781 0.000988328854777707 0.000836846113296335 0.000726496714817108]

if %there are array elements that are keep decreasing

%then everything changes to 0 so it remains (1x500) but everything is 0

end

per isakson
on 19 Jan 2021

Edited: per isakson
on 19 Jan 2021

Is something like this what you are asking for?

%%

a = [100.001469926008 0.0140073495254864 0.00452326089811489 ...

, 0.00228582409151486 0.00157249586126199 0.00121055360392781 ...

, 0.000988328854777707 0.000836846113296335 0.000726496714817108 ];

%%

daff = diff(a);

ix = find( a<1, 1, 'first' ); % "worth below 1"

if all( daff(ix:end) < 0 ) % "keep decreasing"

a(ix:end)=0; % "changes to 0"

end

it returns

>> a

a =

Columns 1 through 5

100 0 0 0 0

Columns 6 through 9

0 0 0 0

Based on the comments below I think the best answer is:

%%

daff = diff(a);

if all( daff < 0 ) % "keep decreasing" monotonically decreasing

a(:) = 0; % "changes to 0" "(:)" is needed to replace ALL values by 0

end

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

Start Hunting!