簡體   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