How can I use a function on a series of values?

2 visualizaciones (últimos 30 días)
Nishant Singhal
Nishant Singhal el 10 de Dic. de 2016
Respondida: Walter Roberson el 10 de Dic. de 2016
So I've got a function y=f(x), where y=roots([1 0 x]).
I have a matrix n, which is:
-1 0 0
-2 0 0
-3 0 0
-4 0 0
-5 0 0
-6 0 0
-7 0 0
-8 0 0
-9 0 0
-10 0 0
I'm trying to have columns 2 and 3 be the solutions to the function.
Here's what I tried:
>> n(:,2:3)=f(n(:,1))
It keeps saying 'error using horzcat'.
But if I do it manually, one by one, it works, for example:
>> n(1,2:3)=f(n(1,1))
This would make row 1 of n (-1, -1, 1), which is correct.
How can I make it work for all of the rows at once?

Respuestas (2)

David Barry
David Barry el 10 de Dic. de 2016
a = arrayfun(f, n(:,1), 'UniformOutput', false);
n(:,2:3) = [a{:}]';

Walter Roberson
Walter Roberson el 10 de Dic. de 2016
You cannot. roots() only works with one row at a time.
However, you are working with a simple quadratic so you can easily construct the quadratic solution formula and vectorize that. A moment of thought shows that the solutions will be +/- sqrt(-x)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by