为什么我的 Matlab 函数不接受数组?

发布于 2024-12-15 04:09:39 字数 499 浏览 0 评论 0原文

我有以下函数:

function [ res ] = F( n )
    t = 1.5;
    res = 0;
    if n <= 0
        return;
    end
    for i = 0:n-1
        res = res + power(-1,i)*power(t,2*i+1)/((2*i+1)*factorial(i));
    end 
end

我试图将一个数组传递给它,以便我可以看到数组中每个点的输出

F([2,3,4])

由于某种原因,它拒绝对整个数组起作用,只给我第一个成员的输出。 这是为什么?

编辑:如果我

res = 0;

从一开始

res = 0 + n;
res = res - n;

就更改为它确实适用于整个数组。

I have the following function:

function [ res ] = F( n )
    t = 1.5;
    res = 0;
    if n <= 0
        return;
    end
    for i = 0:n-1
        res = res + power(-1,i)*power(t,2*i+1)/((2*i+1)*factorial(i));
    end 
end

I'm trying to pass an array to it so that I could see its output for every point in the array

F([2,3,4])

For some reason it refuses to act on the whole array, only giving me the output for the first member.
Why is that?

EDIT: If I change

res = 0;

at the beginning to

res = 0 + n;
res = res - n;

It does work for the whole array.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

始终不够 2024-12-22 04:09:39

问题是 res 不是数组。您可以执行以下操作:

function res = F(n)
  t = 1.5;
  m = length(n);
  res = zeros(m, 1);
  for  j = 1 : m
    for i = 0 : n(j) - 1
      res(j) = res(j) + power(-1, i) * power(t, 2 * i + 1) / ((2 * i + 1) * factorial(i));
    end; 
  end;
end;

示例向量输入的结果:

>> F([2,3,4])

ans =

   0.375000000000000
   1.134375000000000
   0.727566964285714

The problem is res is not an array. You can do something like this:

function res = F(n)
  t = 1.5;
  m = length(n);
  res = zeros(m, 1);
  for  j = 1 : m
    for i = 0 : n(j) - 1
      res(j) = res(j) + power(-1, i) * power(t, 2 * i + 1) / ((2 * i + 1) * factorial(i));
    end; 
  end;
end;

The result for your example vector input:

>> F([2,3,4])

ans =

   0.375000000000000
   1.134375000000000
   0.727566964285714
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文