【问题标题】:Creating dummy variable in Scilab在 Scilab 中创建虚拟变量
【发布时间】:2016-03-18 16:18:25
【问题描述】:

我需要做以下事情:

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

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

【问题讨论】:

  • 您是否正在寻找与 Matlab 的 dummyvar 等效的 Scilab?
  • 是的!我想要一个等效于 Scilab 的虚拟 var Matlab 的命令。

标签: sparse-matrix scilab dummy-variable


【解决方案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 中引发错误,因为矩阵是数字的并且包含零。

【讨论】:

  • 对。但我认为只有零的列不应该存在,因为该命令在第一列中考虑了两个。请参见 Matlab 示例。 (Example
  • Matlab 中的 dummyvar 要求矩阵中的 所有 值都是正整数,如果矩阵是数字的。列中即使是一个零也会导致错误。
猜你喜欢
  • 2023-03-27
  • 2017-04-23
  • 2023-03-24
  • 2018-04-06
  • 2020-01-31
  • 1970-01-01
  • 2013-09-23
  • 2017-02-24
  • 2012-09-27
相关资源
最近更新 更多