【问题标题】:SciLab matrix assignment Invalid Index ErrorSciLab 矩阵分配无效索引错误
【发布时间】:2025-12-27 15:45:11
【问题描述】:

我想使用 SciLab 工具将图像隐藏在大图像中,以下是我正在使用的代码 sn-p

S1_diag = diag(s1);
S2_diag = diag(s2);

S1_diag(1:length(s1), :) = S2_diag(1:length(s1), :);

其中 s1 和 s2 是图像 1 和 2 的奇异对角矩阵

相同的代码在 Matlab 中有效,但在 SciLab 中生成“无效索引”错误 (21)。我错过了什么?

我是 SciLab 语法的新手,所以不明白如何在 SciLab 中解决这个问题。

感谢任何帮助。

【问题讨论】:

  • 无法保证 scilab 的工作方式与 matlab 完全一样。这是尽可能只坚持一个程序的主要原因。但是,任何these 操作都应该有效。

标签: matlab scilab


【解决方案1】:

原因是length 命令对于 Scilab 和 Matlab 是不一样的。

  • 在 Matlab 中,length 给出了矩阵的最大维数。因此,对于 2×3 矩阵,它是 3。
  • 在 Scilab 中,length 给出了元素的数量。因此,对于 2×3 矩阵,它是 6。

这是一本小词典:

  • Matlab 的length(A) 与Scilab 的max(size(A)) 相同
  • Scilab 的length(A) 与Matlab 的numel(A) 相同

【讨论】: