How to Make a function accept vector inputs

function Ml = myseries(t)
n=0;
while (n<10)
Ml = sum(t.^n/(gamma(n + 1)));
n = n+1;
end
The above code runs well as long as the input variable is a scalar; for vectorized inputs, it fails. What might be wrong?

4 个评论

What "It fails" means? is there any error message?
It isn't a question of MAKING it accept vector input. ANY function can always accept vector inputs. The issue is your code, making it work with vectors.
sum(t.^n/(gamma(n + 1))) needs to have a . before the /
./ would only be needed if the right hand side, gamma(n+1) was a vector or matrix, but in this context it is a scalar.

请先登录,再进行评论。

 采纳的回答

You did not specify how the output should be , 1x1 or Nx1 , you can try this way :
function Ml = myseries(t)
n=0;
ctr=1;
while (n<10)
Ml(ctr) = sum(t.^n/(gamma(n + 1)));
n = n+1;
ctr=ctr+1;
end

更多回答(2 个)

Your current code overwrites all of Ml each time through the "while" loop, and so is unlikely to be doing what you want.
for n = 0 : 9
Ml(n,:) = sum(t.^n/(gamma(n + 1)));
end

4 个评论

Error Message: ??? Subscript indices must either be real positive integers or logicals.
Just a small correction, @Walter, the index must start at 1.
Right, sorry,
for n = 0 : 9
Ml(n+1,:) = sum(t.^n/(gamma(n + 1)));
end
I am proud to belong to this community; you all are legends. Many thanks

请先登录,再进行评论。

I think you can to what you want to do with one of these functions. Not sure what you want to do so pick one:
function theSum = myseries(t)
% Vectorized method.
n = 1:length(t);
theSum = sum(t.^n ./ (gamma(n + 1)));
function theSum = myseries(t)
% For loop method.
theSum = 0;
for n = 1 : length(t)
theSum = theSum + t(n)^n ./ gamma(n + 1);
end
This does something completely different than the other two answers but I think is what you were actually intending, which is trying to sum a series.

5 个评论

i think the output should be a vector , if it was not the case, then a simple "sum(.....)" should suffice .
I'm not so sure. It looks like he's trying to sum a series, and that would give a single summed value. I think he wants the sum of the first 10 terms of t(n)^n/gamma(n+1). A 10 element array t is passed in and n goes from 1 to 10. At least that's how I interpret it. Why do you think he wants a vector?
it is guess, like i explained, if it was not a vector, no need for a question, a simple "sum(quantity)" is fine .
Well he accepted your interpretation so I guess you were right. The Ml(2) was the sum of terms 1 and 2, the Ml(3) was the sum of terms 1, 2, and 3, and the element Ml(N) was term1 + term2 + term3 + term4 +....+termN. I thought he wanted just one sum - the sum of terms 1 through term N - not N sums, but I guess I was wrong.

请先登录,再进行评论。

类别

帮助中心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