我知道如何实现与循环不相等,但我更愿意使用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。我将继续用我的进度更新这个
答案 0 :(得分:1)
您不需要arrayfun
。要检查X
的每个元素是否不等于特定值n
,请执行以下操作:
all(X ~= n)
X ~= n
返回一个逻辑数组。 all()
检查逻辑数组的所有元素是否为true
。
除了更简单之外,这种方法比arrayfun
更有效。它使用本机编译代码,而arrayfun
使用matlab解释器将函数应用于数组的每个元素。