function y = dd2(x1,x2)
y=0;
if x1==0 && x2==0
y=1;
end
这不起作用,因为输入不能是数组。 我希望它可以用于1 * m的数组X和1 * n的数组Y. 所以当你dd2(X,Y)时,它会在X = 0,Y = 0的位置创建一个m * n矩阵,其中为1,否则为零
是否有任何功能可以在matlab中实现? (就像2D离散delta函数)我没有找到它.. dirac(x)将返回我想要的inf为零。有没有办法将inf改为1?感谢
答案 0 :(得分:2)
有一个名为bsxfun
的神奇函数可以在MATLAB中执行几乎所有操作,并且肯定会在此处找到另一个完美的设置。使用它的实现看起来像这样 -
y = bsxfun(@and,x1(:)==0,x2(:).'==0)
示例运行x1
为1x4
,x2
为1x6
-
x1 =
0 -1 -1 0
x2 =
-1 -1 -1 -1 0 0
y =
0 0 0 0 1 1
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 1 1
查看输出0
中x1
,x2
和1
的{{1}}的位置验证结果。
一般案例解决方案
对于一般情况,您可以像这样定义anonymous function -
y
然后,在func1 = @(x1,x2) x1==0 & x2==0
内使用它来获取所需的输出 -
bsxfun
因此,对于每个新的条件语句,您只需要更改y = bsxfun(func1,x1(:),x2(:).')
!例如,您可以在其中添加一个条件语句 -
func1