0

好的,我是 MATLAB 的新手,我的朋友在作业问题上寻求帮助。我只是通过摆弄文档并猜测和检查得出了一个答案,但我希望有人能告诉我一个更好的方法。

这是设置:给你一张桌子

x   y   z
x_1 y_1 z_1
x_2 y_2 z_2
x_3 y_3 z_3
x_4 y_4 z_4

我们存储在一个矩阵M中。我们有一个函数 $f(x,y,z)=x^2+yz^3$,尚未在 MATLAB 中定义,我们要获取列向量

[ f(x_1, y_1, z_1)
  f(x_2, y_2, z_2)
  f(x_3, y_3, z_3)
  f(x_4, y_4, z_4) ]

问题表明它必须在单个表达式中完成。

我想出的解决方案是

arrayfun(@(x,y) x^2+y-z^3, M(:,1), M(:,2), M(:,3))

作为一名程序员(不在 MATLAB 中),我说这个解决方案看起来像垃圾。在 MATLAB 中是否有更好/更被接受的方法来做到这一点?

4

2 回答 2

1

如果你的函数f(x,y,z)是固定的,你可以直接对矩阵元素进行操作,即你可以写

M(:,1).^2 + M(:,2) - M(:,3).^3

得到所需的输出向量。

于 2012-09-03T15:26:26.977 回答
0

如果 f 不是固定函数,我会选择这样的东西

g = @(row) f(row(1), row(2), row(3));
arrayfun(@(r) g(M(r,:)), 1:size(M,1));
于 2012-09-04T09:08:21.113 回答