在 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 中引发错误,因为矩阵是数字的并且包含零。
我需要做以下事情:
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 中引发错误,因为矩阵是数字的并且包含零。