MATLAB怎么在函数里传送数组

写一个M函数文件,使得调用f(x),x可用矩阵调入,得出f(x)为同阶矩阵
function [ a ] = f( x )
a=1/((x-2)*2+0.1)+1/((x-3)*4+0.01);
end
这样会出错,我知道可以直接用 arrayfun(@,)函数,但是怎么不用它,直接传?

第1个回答  2014-11-23
matlab中数组可以像变量一样直接传的,你这里出错可能是因为格式错了。追问

那个括号有没有都行,不能直接传数组,a是数组
f(a)
??? Error using ==> mldivide
Matrix dimensions must agree.

Error in ==> f at 4
a=1/((x-2)*2+0.1)+1/((x-3)*4+0.01);

追答

刚刚写错了,确实和括号没有关系。是你的运算有问题。导致矩阵维数不匹配。使得运算错误。
1/a.如果a是矩阵的话这样的求法是不允许的。如果你想求a的逆使用a^(-1)而不是1/a
数和矩阵之间是没有定义除法的。

追问

我想对数组里每个数分别处理,再返回同型数组^_^
你知道怎么办吗~

追答

如果是对矩阵中的每一个元素进行操作的话,使用.(点)运算。即每个运算符前加上一个“.”
如1./a就是每一个a元素都取倒数。返回一个和a相同维数的矩阵。

本回答被提问者采纳