SciLab正在给出"子矩阵定义错误"错误

时间:2016-06-06 15:39:36

标签: scilab

我正在尝试像这样定义矢量C:

[0.67, 0.67, 0.67, 0.67, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02]

然后创建矩阵C_tmp,如:

[0.67, 0.67, 0.67, 0.67, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02],
[0.67, 0.67, 0.67, 0.67, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02],
[0.67, 0.67, 0.67, 0.67, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02],
[0.67, 0.67, 0.67, 0.67, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02]

但是我得到了#34; Submatrix错误地定义了"最后一行执行期间的错误。

C = zeros(1, X_SIZE);
C_tmp = zeros(T_SIZE, X_SIZE)
C(1:KSI) = 0.67;
C(KSI+1:$) = 0.02;
C_tmp(1:$) = C;

3 个答案:

答案 0 :(得分:1)

你需要一个mxNc矩阵R,其中每一行都是向量C的de分量。

1)用C

创建一个对角矩阵
 d = diag (c) (NcxNc matrix)

2)创建mxNc

的矩阵
o = ones (m, Nc) (mxNc matrix)

3)创建矩阵 R = o * d(mxNc矩阵)

答案 1 :(得分:1)

如果您关心速度,请避免致电repmat并使用Kronecker产品.*.

C_tmp = ones(T_SIZE, 1) .*. C;

答案 2 :(得分:0)

好的我找到了解决方案 - repmat功能完成了这项工作。

C_tmp = repmat(C, T_SIZE, 1);