Matlab 传递数组作为函数参数
Matlab pass array as function parameter
在 matlab 中,我们尝试为逻辑创建一个 table,我们有一个名为 "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
我们想创建一个 table,对于 table,我们有 3 个数组 X、Y 和 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));
但它总是抛出错误"Too many Output Arguments"有人知道如何解决这个问题吗?
您遇到的问题是因为函数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
returns是逻辑向量,true
只出现在值为0
的位置(类似于x==1
和x~=0&x~=1
)
那么我认为 T= table(x, y, tnot(x))
会很好。
在 matlab 中,我们尝试为逻辑创建一个 table,我们有一个名为 "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
我们想创建一个 table,对于 table,我们有 3 个数组 X、Y 和 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));
但它总是抛出错误"Too many Output Arguments"有人知道如何解决这个问题吗?
您遇到的问题是因为函数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
returns是逻辑向量,true
只出现在值为0
的位置(类似于x==1
和x~=0&x~=1
)
那么我认为 T= table(x, y, tnot(x))
会很好。