Hello !
I am having truble inserting vectors as an input to a function that is a vector
what I did is
I defined a function as
gradient=@(x) [1;x;x^2;x^3];
then I need to input a vector to it. like this
gradient([2 ;3 ; 4])
or
gradient([2 3 4])
so the result I am hoping for is a matrix where each column represent a function (1,x,x^2,x^3)
and each row is the value of the function at each point in the input vector.
so it would be some thing like:
1 2 4 8
1 3 9 27
1 4 16 46
I have done this using loop. but since the data I am dealing with is large this takes so long and I would brefer a method that does it in a vector form.

 採用された回答

Star Strider
Star Strider 2019 年 2 月 10 日

1 投票

First, gradient is a quite useful built-in MATLAB function, so name your function something different.
Second, your function needs some help.
Try this:
myGradient = @(x) [ones(size(x(:))), x(:), x(:).^2, x(:).^3];
Y = myGradient([2 3 4])
I will leave it to you to explore the details of colon operator single-indexing (it forces ‘x’ here to be a column vector), and the necessity to use the ones function.
Y =
1 2 4 8
1 3 9 27
1 4 16 64

4 件のコメント

Nora Khaled
Nora Khaled 2019 年 2 月 10 日
Thank you very much !
this worked very well and way much faster that my original loop.
Star Strider
Star Strider 2019 年 2 月 10 日
My pleasure!
If my Answer helped you solve your problem, please Accept it!
Nora Khaled
Nora Khaled 2019 年 2 月 13 日
sorry did not know I had a choice of accepting the answer.
And again, Thank you!
Star Strider
Star Strider 2019 年 2 月 13 日
As always, my pleasure.
Thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by