我正在调用这样的向量的自写函数“func”:
x_values=[0 1 2];
result=func(x_values);
问题是在这个函数中我有一个if
语句来确定输出。如果我将此函数应用于标量,我没有问题,但如果我将它应用于数字向量,则该if
语句无法完成他的工作。为什么?我该如何修复它?
function [y]=func(x)
if(x==0)
y=0
else
y=1./sin(x);
end
end
我正在调用这样的向量的自写函数“func”:
x_values=[0 1 2];
result=func(x_values);
问题是在这个函数中我有一个if
语句来确定输出。如果我将此函数应用于标量,我没有问题,但如果我将它应用于数字向量,则该if
语句无法完成他的工作。为什么?我该如何修复它?
function [y]=func(x)
if(x==0)
y=0
else
y=1./sin(x);
end
end
您需要分别处理零和非零条目。这可以通过索引轻松实现:
function [y]=func(x)
xIsZero = x==0;
%# preassign y
y = x;
%# fill in values for y
y(xIsZero) = 0
y(~xIsZero) = 1./sin(x(~xIsZero))
您只想分配向量的一个子集。例如:
function [y]=func(x)
y=zeros(size(x));
mask = x ~= 0;
y(mask) = 1 ./ sin(x(mask));
end