小编kne*_*epp的帖子

如何计算python中正常累积分布函数的倒数?

如何计算Python中正态分布的累积分布函数(CDF)的倒数?

我应该使用哪个库?可能是scipy?

python normal-distribution scipy

55
推荐指数
3
解决办法
8万
查看次数

矢量化冒号(:)的概念 - 在MATLAB中两个向量之间的值

我有两个向量,idx1并且idx2,我想获得它们之间的值.如果idx1idx2是数字,而不是载体,我能做到这一点的方式如下:

idx1=1;
idx2=5;
values=idx1:idx2 

% Result
 % values =
 % 
 %    1     2     3     4     5
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,idx1并且idx2是可变长度的向量.例如,对于length = 2:

idx1=[5,9];
idx2=[9 11];
Run Code Online (Sandbox Code Playgroud)

我可以使用冒号运算符直接获取其间的值吗?这是类似于以下内容:

values = [5     6     7     8     9     9    10    11]
Run Code Online (Sandbox Code Playgroud)

我知道我可以做idx1(1):idx2(1)idx1(2):idx2(2),这是单独提取各列的值,因此,如果没有其他的解决方案,我可以用一个for循环做到这一点,但也许Matlab的可以更容易地做到这一点.

matlab vector vectorization colon

15
推荐指数
1
解决办法
3439
查看次数

MATLAB中的行程解码

为了巧妙地使用线性索引accumarray,我有时觉得需要根据游程编码生成序列.由于没有内置函数,我要求最有效的方法来解码在RLE中编码的序列.

规格:

为了使这个公平比较,我想为该功能设置一些规范:

  • 如果values指定了相同长度的可选第二个参数,则输出应该根据这些值,否则只是值1:length(runLengths).
  • 优雅处理:
    • runLengths
    • values 是一个单元阵列.
  • 输出向量应具有相同的列/行格式 runLengths

简而言之:该函数应该等效于以下代码:

function V = runLengthDecode(runLengths, values)
[~,V] = histc(1:sum(runLengths), cumsum([1,runLengths(:).']));
if nargin>1
    V = reshape(values(V), 1, []);
end
V = shiftdim(V, ~isrow(runLengths));
end
Run Code Online (Sandbox Code Playgroud)

例子:

以下是一些测试用例

runLengthDecode([0,1,0,2])
runLengthDecode([0,1,0,4], [1,2,4,5].')
runLengthDecode([0,1,0,2].', [10,20,30,40])
runLengthDecode([0,3,1,0], {'a','b',1,2})
Run Code Online (Sandbox Code Playgroud)

和他们的输出:

>> runLengthDecode([0,1,0,2])
ans =
     2     4     4

>> runLengthDecode([0,1,0,4], [1,2,4,5].')
ans =    
     2     5     5     5     5

>> runLengthDecode([0,1,0,2].', [10,20,30,40])
ans =
    20
    40
    40

>> runLengthDecode([0,3,1,0],{'a','b',1,2})
ans …
Run Code Online (Sandbox Code Playgroud)

performance matlab run-length-encoding

13
推荐指数
3
解决办法
1473
查看次数

使用MATLAB生成重复的所有组合

如何创建所有K-组合,带重复一组给定(也称为K-multicombinationsmultisubsets使用MATLAB)?

这类似于笛卡尔积,但两行只有它们的排序不同应该被认为是相同的(例如,矢量[1,1,2]=~=[1,2,1]被认为是相同的),因此生成笛卡尔积然后应用unique(sort(cartesianProduct,2),'rows')应该产生相同的结果.

示例: 调用nmultichoosek(1:n,k)应生成以下矩阵:

nmultichoosek(1:3,3)
ans =
     1     1     1
     1     1     2
     1     1     3
     1     2     2
     1     2     3
     1     3     3
     2     2     2
     2     2     3
     2     3     3
     3     3     3
Run Code Online (Sandbox Code Playgroud)

matlab combinations combinatorics multiset

10
推荐指数
1
解决办法
8432
查看次数

生成包含Matlab中给定集合的至少一个元素的所有组合

我用它combnk来生成一个组合列表.如何生成组合子集,其中始终包含特定值.例如,因为combnk(1:10, 2)我只需要包含3和/或5的组合.有快速的方法吗?

matlab combinations

9
推荐指数
1
解决办法
1万
查看次数

如何在MATLAB中找到所有排列(重复)?

假设我有4个字母,我想在3个地方安排它们(允许重复),所以我会有4 3 = 64个可能的排列.我该如何计算和打印它们?

matlab permutation cartesian-product

8
推荐指数
2
解决办法
2万
查看次数

为迭代函数组合定义泛型函数

让我们定义任何函数句柄foo:

foo = @(x) x*2
Run Code Online (Sandbox Code Playgroud)

我试图写一个通用函数defFun生成的Ñ个职大功能foo,即ñ的反复调用foo,它可以存储在另一个手柄功能的方式boo,就像这样:

boo = defFun(foo,n)
Run Code Online (Sandbox Code Playgroud)

例如,

foo = @(x) x^2;  
boo = defFun(foo,3);
Run Code Online (Sandbox Code Playgroud)

boo(3)将给予6561 [== foo(foo(foo(3)))]boo(2)将给予256 [== foo(foo(foo(2)))].

我尝试使用此代码编写,defFun但这些句柄处理起来很棘手.有任何想法吗?

function boo = defFun(foo,n)
   h = foo;
   for i=2:n
      h = h(h);
   end
   boo = h
end
Run Code Online (Sandbox Code Playgroud)

matlab function handle

7
推荐指数
1
解决办法
473
查看次数

在多台计算机上挂载相同的/ nix目录

我想在相同架构的多个openSUSE机器(不同版本)上使用nix-package管理器一致地安装软件.我不是任何系统的root用户,但是想要说服我们的系统管理员nix在使用网络安装的所有机器上以多用户模式安装.

  • 是否可以/nix在所有计算机上安装相同的目录并在所有这些计算机上以多用户模式运行nix?

  • nix-env -i干扰其他机器吗?

  • nix-env -i xxx安装xxx在所有机器的用户配置文件中还是仅安装在执行命令的机器上?安装的那个怎么样root

  • 一台机器上的垃圾收集是否考虑了其他机器上安装的软件?

nix

6
推荐指数
1
解决办法
249
查看次数

在MATLAB中稳定准确

MATLAB的内置函数accumarray接受函数fun作为第四个参数.

A = accumarray(subs,val,sz,fun);
Run Code Online (Sandbox Code Playgroud)

这适用funval具有相同下标的元素的每个子集subs.但文件说明:

如果下标subs未按其线性索引排序,则fun不应取决于其输入数据中值的顺序.

我们如何实现一个没有这个限制的稳定版本accumarray,但是会保证子集采用与给定的相同的顺序val

例:

subs = [1:10,1:10];
val = 1:20;
accumarray(subs(:), val(:), [], @(x)x(end)).'
Run Code Online (Sandbox Code Playgroud)

这样做的预计产出将是11:20,如果accumarray是稳定的.实际上输出是:

ans =
    11    12    13    14     5     6     7    18    19    20
Run Code Online (Sandbox Code Playgroud)

我们的实施应该产生:

accumarrayStable(subs(:), val(:), [], @(x)x(end)).'`
ans =
    11    12    13    14    15    16    17    18    19    20
Run Code Online (Sandbox Code Playgroud)

matlab stable-sort accumarray

5
推荐指数
1
解决办法
430
查看次数

MATLAB中的连续函数应用

如何在MATLAB中使用匿名函数进行连续函数应用?类似于以下内容:

g = @(x) @(y) x+y;
g(1)(2)
Run Code Online (Sandbox Code Playgroud)

但是,MATLAB在第2行给出错误:() - 索引必须出现在索引表达式的最后.

但以下工作:

g = @(x) @(y) x+y;
f = g(1);
f(2)
Run Code Online (Sandbox Code Playgroud)

上面的脚本输出ans = 3.

我对MATLAB不是很熟悉,但我认为在函数级别上操作的能力使编程变得更加容易.例如,当我需要在L ^ 2的某个子空间上计算函数的投影时,投影算子和规范化等所有输出函数都需要额外的参数来评估数值答案.

matlab functional-programming anonymous-function currying

5
推荐指数
1
解决办法
708
查看次数