matlab 无法将列添加到GNU Octave中的矩阵

bcs8qyzn  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(143)

我正在编写一个函数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;]

感谢您的帮助。

m1m5dgzv

m1m5dgzv1#

在经历了许多挫折之后,我上床睡觉,睡在上面,今天带着休息得很好的头脑和咖啡玩弄着它。贝克的回答没有完全满足我的需要,但它确实为我指明了正确的方向。我最后的结论是:

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,:) = strcat(input(counttest,:),"=",num2str(f1a(out(:))));
  endfor

我仍然不太确定我之前做错了什么,但疲惫确实会导致愚蠢的错误。

相关问题