我需要做以下事情:
A = [1,2,3; 0,4,0; 0,5,6]
B = krone (A, A)
C = sparse (dummy (B))
有人能告诉我如何在Scilab中创建虚拟变量。我正在寻找一个与Matlab中的虚拟变量相当的命令。
答案 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
相同。
如果group是数字向量或矩阵,则任何列中的值必须是正整数,范围从1到相应变量的级别数
这是我的功能支持的唯一一种数据;它不处理分类数据。我将指出您提供的代码示例也会在Matlab中引发错误,因为矩阵是数字的并且包含零。