在Scilab中创建虚拟变量

时间:2016-03-18 16:18:26

标签: sparse-matrix scilab dummy-variable

我需要做以下事情:

A = [1,2,3; 0,4,0; 0,5,6]
B = krone (A, A)
C = sparse (dummy (B))

有人能告诉我如何在Scilab中创建虚拟变量。我正在寻找一个与Matlab中的虚拟变量相当的命令。

1 个答案:

答案 0 :(得分:1)

Matlab中没有内置Scilab版本的dummyvar命令,但这里有一个对数值数据执行相同操作的函数。

function D = dummyvar(B)
    m = size(B, 1)
    D = zeros(m, 0)
    for j = 1:size(B, 2)
        E = zeros(m, max(B(:, j)))
        for i = 1:m
            E(i, B(i, j)) = 1
        end
        D = [D, E] 
    end
endfunction

使用示例:

B = [1 2 1; 3 1 2; 1 2 2]
dummyvar(B)

输出:

1.    0.    0.    0.    1.    1.    0.  
0.    0.    1.    1.    0.    0.    1.  
1.    0.    0.    0.    1.    0.    1.  

此输出与Matlab返回的dummyvar相同。

引用documentation

  

如果group是数字向量或矩阵,则任何列中的值必须是正整数,范围从1到相应变量的级别数

这是我的功能支持的唯一一种数据;它不处理分类数据。我将指出您提供的代码示例也会在Matlab中引发错误,因为矩阵是数字的并且包含零。