arrayfun with different dimensions
17 次查看(过去 30 天)
显示 更早的评论
Hi guys, I have the following question.
I am trying to calculate sum_(j=1)^k (sum_(i=1)^(k-1) ( (i+j)! ))
I defined a function f=@(k) sum(factorial(1:k)+factorial(1:k-1))
Then x=1:5 in order to evaluate the sum for the first 5 natural numbers
But arrayfun(f,x) produces a mistake since it says that I have different dimensions. Which is correct.. but why should it be a problem? And how should I evaluate the sum then?
Many thanks,Dimitri
1 个评论
Star Strider
2014-5-4
It would help if you posted all your relevant code. Be sure to include your arrayfun call.
采纳的回答
Jos (10584)
2014-5-4
factorial(1:k) will give you a vector with k values while factorial(1:k-1) will a vector with k-1 values. You simply cannot add vectors of unequal lengths ...
0 个评论
更多回答(4 个)
Jan
2014-5-4
Start with two simple for loops:
S = 0;
for jj = 1:k
for ii = 1:k-1
S = S + ...
end
end
0 个评论
Jos (10584)
2014-5-6
So you want 20 sums in total (5 values of x combined with 4 values of y)?
x = 1:5
y = 1:4
[XX,YY] = ndgrid(x,y)
f = @(k) sum(factorial((1:XX(k))+(1:YY(k))) )
S = arrayfun(f,1:numel(XX))
3 个评论
Jos (10584)
2014-5-7
Oops. Yes, of course, because again you want to add two vectors that are not equally long. This means that your formula is not right! Can you split your formula into sub-formulaes like this, and show the expected output for each step when you specify a specific a and b?
a = …
b = …
c = a + b % !! this errors when a and b do not have the same number of elements
d = factorial(c)
e = sum(d)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Least Squares 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!