Matlab将数组作为函数参数



在matlab中,我们试图为逻辑制作一个表,我们有一个名为"functionNot"的函数,它将0变成1,将1变成0;

function functionNot(x)
for x >=0 && x <= 2
if x == 0
disp(1);
elseif x == 1 
disp(0);
else disp (2);
end
end
end

我们想要制作一个表,对于表,我们有3个数组X,Y,and tnot(它保持"functionNot"的值(我们有阵列X和阵列Y

x=[1; 1 ;1; 0; 0; 0; 2; 2; 2];
y=[1; 0; 2 ;1; 0; 2; 1; 0; 2];
tnot(x) =[ functionNot(x(1)); functionNot(x(2));functionNot(x(3));functionNot(x(4));functionNot(x(5));functionNot(x(6));functionNot(x(7));functionNot(x(8));functionNot(x(9))]
tand(x,y) =[ functionAnd(x(1),y(1));
T= table(x, y, tnot(x));

但它总是抛出错误"输出参数太多",有人知道如何解决这个问题吗?

遇到的问题是由于函数functionNot中的x仅适用于标量,而不是矢量。要修复它,你可以尝试

function y = functionNot(x)
y = x;
for k = 1:length(x)
if x(k) == 0
y(k) = 1;
elseif x(k) == 1 
y(k) = 0;
else
continue;
end
end
end

此外,您可以像下面的一样编写functionNot的矢量化版本

function y = functionNot(x)
y = 1*(x==0)+0*(x==1) + 2*(x~=0&x~=1);
end

其中x==0返回逻辑向量,trues仅出现在值为0的位置(类似于x==1x~=0&x~=1(那么我认为T= table(x, y, tnot(x))会很好地工作。

相关内容

  • 没有找到相关文章

最新更新