Borrar filtros
Borrar filtros

Pairs of elements that meet a condition?

3 visualizaciones (últimos 30 días)
Marco Bakker
Marco Bakker el 9 de Oct. de 2016
Editada: Massimo Zanetti el 9 de Oct. de 2016
Suppose all_val is an nx2 matrix of real numbers.
How to get a matrix cond_val with only the rows of all_val for which
fun(j1)*fun(j2) < 0 % for some scalar-input function fun.m
Where j1 is the element from column 1 and j2 is the corrosponding element from column 2 of the rows of all_val.
I've had a look at Find Array Elements That Meet a Condition but have had no luck.

Respuesta aceptada

Guillaume
Guillaume el 9 de Oct. de 2016
Editada: Guillaume el 9 de Oct. de 2016
If fun can only operate on scalar:
cond_val = all_val(prod(arrayfun(@fun, all_val), 2) < 0, :);
If fun can operate on whole arrays at once, then simply:
cond_val = all_val(prod(fun(all_val), 2) < 0, :);

Más respuestas (2)

Massimo Zanetti
Massimo Zanetti el 9 de Oct. de 2016
Editada: Massimo Zanetti el 9 de Oct. de 2016
A=rand(15,2);
f=@(x) x.^2; %or another function you define
C=cell2mat( arrayfun( @(k) f(A(k,1))*f(A(k,2))<0 , (1:15)' ) );

Star Strider
Star Strider el 9 de Oct. de 2016
I have no idea what ‘fun’ does or what ‘all_vals’ contains, but you can do something like this to create a logical vector output:
all_vals = randi(9, 10, 2); % Create Matrix
fun = @(x) x - 5; % Create Function
Out = (fun(all_vals(:,1)) .* fun(all_vals(:,2))) < 0; % Logical Vector Output
Elements of ‘Out’ equal to 1 are true so the condition was met, 0 are false.

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by