繁体   English   中英

无法在 GNU Octave 中向矩阵添加列

[英]Unable to Add Column to Matrix in GNU Octave

我正在写一个 function,truthtable.m,我可以在其中输入一个包含一系列二进制输入的矩阵,然后输出一个 function 的真值表。 我有一个工作 function,binvargen.m,它为给定位数的每个可能输入生成一个二进制字符串,并将其输入到程序中。

我似乎无法创建一个包含输入和 output 的新矩阵。 我尝试在输入矩阵上使用 reshape,认为我可以将输出作为额外的列添加到它以形成我的 output,但它会抛出一个没有解释的错误,只是说它无法调整矩阵的大小。

我还尝试从头开始创建一个新矩阵,并将输入矩阵输入其中,然后将输出输入其中。 然而,当我这样做时,它只是打印输入矩阵并完全忽略 output。 我不知道我做错了什么。

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

output 是:

[0, 0, 0, 0, 1, 1, 1, 1]

我希望 output(counttest,1:variables) 与输入相同。 换句话说,应该输入 output,但在末尾添加了一个额外的列。 output 应如下所示:

[0000;
0010;
0100;
0110;
1001;
1011;
1101;
1111;]

帮助表示赞赏。

在经历了很多挫折之后,我上床睡觉,今天用它好好休息,喝咖啡玩它。 烧杯的回答并没有完全满足我的需要,但它确实为我指明了正确的方向。 我的结尾是这样的:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM