arrayfun不等于特定字符MATLAB

时间:2017-01-15 17:22:31

标签: matlab

我知道如何实现与循环不相等,但我更愿意使用arrayfun函数。

让我们假设我有一个矩阵,只有元素-1和1,随机生成。 其中m = 10且n = 4。

% Generate from a uniformly random sample
X = ones(m,n) - floor(rand(m,n)*2)*2;
Y = ones(m,1) - floor(rand(m,1)*2)*2;

我的想法是创造这样的东西:

B = arrayfun(@(x) x~=1,X);

显然不起作用。我的迭代是检查X中的每个元素是否都不符合特定字符,如果该语句为true,则返回值为1,否则返回零值。 有什么想法吗?感谢

PS:代码有效,我在程序中用不同的符号做错了。感谢@Suever的通知。

PS。我将继续用我的进度更新这个

1 个答案:

答案 0 :(得分:1)

您不需要arrayfun。要检查X的每个元素是否不等于特定值n,请执行以下操作:

all(X ~= n)

X ~= n返回一个逻辑数组。 all()检查逻辑数组的所有元素是否为true

除了更简单之外,这种方法比arrayfun更有效。它使用本机编译代码,而arrayfun使用matlab解释器将函数应用于数组的每个元素。