我正在编写一个函数truthable.m,我可以在其中输入一个包含一系列二进制输入的矩阵,然后输出一个函数的真值表。我有一个有效的函数binvargen.m,它为给定位数的每个可能的输入生成一个二进制字符串,并将其提供给程序。
我似乎无法创建一个既包含输入又包含输出的新矩阵。我尝试对输入矩阵使用RESHAPE,以为可以将输出作为额外的列添加到输入矩阵中以形成输出,但它抛出一个错误,没有任何解释,只是说它不能调整矩阵的大小。
我还尝试从头开始创建一个新的矩阵,并将输入矩阵输入其中,然后再将输出输入其中。然而,当我这样做时,它只是打印输入矩阵,而完全忽略输出。我不知道我做错了什么。
input = [000;
001;
010;
011;
100;
101;
110;
111;]
这是我目前的代码,去掉了令人不快的部分:
function output = truthtable(input)
tests = size(input,1);
variables = size(input,2);
for counttest = 1:tests,
for countvars = 1:variables,
out(countvars) = str2num(input(counttest,countvars));
endfor
output(counttest,variables+1) = f1a(out(:));
endfor
此操作的输出为:
[0, 0, 0, 0, 1, 1, 1, 1]
我希望输出(Counttest,1:变量)与输入相同。换句话说,输出应该是输入的,但在末尾添加了额外的一列。输出应如下所示:
[0000;
0010;
0100;
0110;
1001;
1011;
1101;
1111;]
感谢您的帮助。
1条答案
按热度按时间m1m5dgzv1#
在经历了许多挫折之后,我上床睡觉,睡在上面,今天带着休息得很好的头脑和咖啡玩弄着它。贝克的回答没有完全满足我的需要,但它确实为我指明了正确的方向。我最后的结论是:
我仍然不太确定我之前做错了什么,但疲惫确实会导致愚蠢的错误。