在 Scilab 中创建虚拟变量

Creating dummy variable in Scilab

我需要做以下事情:

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

谁能告诉我如何在 Scilab 中创建虚拟变量。我正在寻找与 Matlab 中的虚拟变量等效的命令。

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 相同 returns。

引用 documentation:

If group is a numeric vector or matrix, values in any column must be positive integers in the range from 1 to the number of levels for the corresponding variable

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