You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave报错horizontal dimensions mismatch的问题求解及代码修复

问题原因及解决办法

问题根源

  • 报错核心是数组维度不匹配:
    第一次循环时,UNICODED为单个数值65,dec2bin(UNICODED)返回1行7列的字符数组;第二次循环时,UNICODED变成[65,66],dec2bin会返回2行7列的字符数组(每个十进制数对应一行二进制字符串)。此时尝试将2行的数组与之前1行的BINARY_VALUE横向拼接,行数不一致,触发维度不匹配错误。
  • 代码逻辑偏离需求:你需要每个字符的二进制单独存储,但当前代码不断累加所有字符的ASCII值,导致dec2bin每次处理的是多个数值的集合,而非单个字符。

解决办法

方案1:用单元格数组单独存储(推荐)

直接在循环中处理单个字符的二进制,存入单元格数组,完全满足“单独存储”的需求:

PLAINTXT = "ABC";
BINARY_CELL = {}; % 单元格数组用于单独存储每个字符的二进制

for i = PLAINTXT
    ascii_val = unicode2native(i, "ISO-8859-1");
    BINARY_CELL{end+1} = dec2bin(ascii_val);
endfor

% 查看结果
disp(BINARY_CELL);

运行后,BINARY_CELL的每个元素对应一个字符的二进制字符串,例如BINARY_CELL{1}为"1000001",BINARY_CELL{2}为"1000010"。

方案2:一次性转换所有字符(按行排列)

如果希望将所有二进制字符串按行组成二维数组,可以跳过循环,直接一次性处理所有字符:

PLAINTXT = "ABC";
UNICODED = unicode2native(PLAINTXT, "ISO-8859-1");
BINARY_VALUE = dec2bin(UNICODED); % 返回3行7列的数组,每行对应一个字符的二进制

disp(BINARY_VALUE);

这种方式避免了循环中累加导致的维度问题,代码更简洁。

内容的提问来源于stack exchange,提问作者mahmo0od

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:30:52