matlab - 匿名函数中的 If-then-else

标签 matlab anonymous-function cell-array

我正在尝试在匿名函数中使用某种 if-then-else 语句,它本身是 cellfun 的一部分。我有一个包含许多 double 矩阵的元胞数组。我想用 +1 替换所有双矩阵中的所有正数,用 -1 替换所有负数。我想知道我是否可以使用匿名函数而不是编写一个单独的函数,然后从 cellfun 中调用它?

这是玩具示例:

mat = [2, 2, 0, -2; -2, 0, 0, 2; -2, 2, -2, 2]
cellarray = repmat({mat}, 3, 1)

我正在寻找这样的东西:

new_cellarray = cellfun(@(x) if x > 0 then x = 1 elseif x < 0 then x = -1, cellarray, 'UniformOutput', false)

我也试过这个,但是,显然我不允许在匿名函数中加上等号。

new_cellarray = cellfun(@(x) x(x > 0) = 1, cellarray, 'UniformOutput', false)
new_cellarray = cellfun(@(x) x(x < 0) = -1, cellarray, 'UniformOutput', false)

最佳答案

您可以使用内置函数 sign,它根据输入返回 1、0 或 -1:

mat = [2, 2, 0, -2; -2, 0, 0, 2; -2, 2, -2, 2];
cellarray = repmat({mat}, 3, 1);
new_cellarray = cellfun(@sign, cellarray, 'UniformOutput', false);

关于matlab - 匿名函数中的 If-then-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56152607/

相关文章:

matlab - 如何在 MATLAB 中将日期时间设置为 5 的倍数?

arrays - 为什么这个函数句柄在不正确的上下文中使用?

javascript - 当未包装在 jquery 中的匿名函数中时,代码将无法运行

model-view-controller - MATLAB 函数拒绝根据放置运行

javascript - 你如何在 JavaScript 中解释这种结构?

arrays - MATLAB - 避免元胞数组内向量中的重复值并取下一个

linux - 在远程 linux 服务器上从本地计算机运行代码而不将它们加载到服务器

algorithm - 基于点和法线识别边缘

matlab - 考虑一些边距在单元格字符串中查找值

arrays - 如何在 MATLAB 中创建元胞数组并将所有元素初始化为同一对象?