【发布时间】:2018-05-13 10:26:08
【问题描述】:
我在matlab中有以下代码
deltax=@(t)xt(t).'-xt(t);
deltay=@(t)yt(t).'-yt(t);
deltaz=@(t)zt(t).'-zt(t);
deltar=@(t)reshape([deltax(:) deltay(:) deltaz(:)].',3*(100+1),[]).';
其中xt、yt、zt 都是t 定义明确的函数。如果我执行 deltax(2),我会得到一个包含 101 个条目的列数组,对于 deltay(2) 和 deltaz(2) 也是如此。
但是当我打电话时
deltar(2)
我收到此错误
Input arguments to function include colon operator. To input the colon character, use ':' instead.
我也试过了
deltar=@(t)reshape([deltax(t)(:) deltay(t)(:) deltaz(t)(:)].',3*(100+1),[]).';
但这会给我语法错误。
我一定是在做一些基本的 matlab 错误。
【问题讨论】:
-
不是完全重复,但问题相同:
fcn(:)使用参数“:”调用fcn,这是非法的(在大多数情况下)。您需要做的类似于您的第二次尝试,但是这是非法的,因为在 MATLAB 中不允许这种双索引(但在 Octave 中是允许的)。您必须为所有三个使用reshape(deltax(t),[],1)。 -
@RodyOldenhuis:该问题为第二次尝试中的错误提供了解释,并提供了潜在的解决方案(尽管不是最佳的),但并不是真正的重复。我认为这里的问题只是为数据制定了一套更好的重塑步骤。
-
@gnovice 好吧,好吧:) 相关