【发布时间】:2018-11-02 19:42:54
【问题描述】:
我将一个函数(它是一个常量)应用于一个数组,我认为它会返回一个数组,其中的值都等于 1,但它只返回 1。
q=@(x) 1
q([1:n].*10)
ans = 1
我以为它会返回:ans = [ 1,1,1,1,1,...]
【问题讨论】:
-
如果你想让它返回一个数组,让它返回一个数组。
1不是数组。它不是“在数组上应用函数”,它只是一个恰好被赋予一个数组作为输入的函数。您可能会将其与arrayfun混淆(此处不需要)。 -
你想完成什么?你想让
x的每个元素都为1吗?你为什么要为此定义一个函数?在我看来,您正在翻译另一种语言,并且缺少 MATLAB 语言的基本概念。如果是这种情况,我建议您查看the excellent "MATLAB basics" tutorials that The MathWorks has put out。 -
@CrisLuengo 定义这样的函数有点奇怪,但我正在编写一种有限差分方法来解决 -y''(x)+p(x)y'(x )+q(x)y(x) = f(x),在特定情况下 p(x) =0 和 q(x) =1。在我的整个函数中,我将函数 q(x) 应用于一个数组,但是当我采用 q=constante 时,它返回一个常量而不是数组(我想要数组中的一行)。此外,自相矛盾的是,如果 f(x)= x+1 并且我将 f 应用于一个数组,它会返回一个数组...
-
这并不矛盾。在 MATLAB 终端中键入
1。它会告诉你1。输入x+1,它将显示一个与x大小相等的数组,每个元素递增1。这就是MATLAB 的工作原理。以VolkanOzcan showed below 的方式实现您的功能。