小编Ber*_* U.的帖子

MATLAB:计算整数向量中2个数字组合的唯一#的最快方法

给定一个整数向量,例如:

X = [1 2 3 4 5 1 2]
Run Code Online (Sandbox Code Playgroud)

我想找到一种非常快速的方法来计算具有2个元素的独特组合的数量.

在这种情况下,两个数字组合是:

[1 2] (occurs twice)
[2 3] (occurs once) 
[3 4] (occurs once) 
[4 5] (occurs once) 
[5 1] (occurs once) 
Run Code Online (Sandbox Code Playgroud)

按照目前的情况,我目前在MATLAB中这样做如下

X = [1 2 3 4 5 1 2];
N = length(X)
X_max = max(X);
COUNTS = nan(X_max); %store as a X_max x X_max matrix

for i = 1:X_max

    first_number_indices   = find(X==1)
    second_number_indices = first_number_indices + 1;
    second_number_indices(second_number_indices>N) = [] %just in case last entry = 1 …
Run Code Online (Sandbox Code Playgroud)

matlab

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

如何将变量的默认值设置为数组?

我最近发现,它可能有猛砸设置一个变量时变量未设置(如中描述的默认值这个职位).

不幸的是,当默认值是数组时,这似乎不起作用.作为一个例子考虑,

default_value=(0 1 2 3 4)

my_variable=${my_variable:=("${default_value[@]}")}

echo ${my_variable[0]}
(0 a  2 3 4) #returns array :-(

echo ${my_variable[1])
#returns empty
Run Code Online (Sandbox Code Playgroud)

有谁知道这是怎么回事?请注意,更改:=:-没有帮助.

另一个问题是,我们获得的任何解决方案也应该在my_variable事先已经设置的情况下工作,这样做

my_variable=("a" "b" "c")
default_value=(0 1 2 3 4)

my_variable=${my_variable:=("${default_value[@]}")}

echo ${my_variable[0]}
"a" 

echo ${my_variable[1]}
"b" 

echo ${my_variable[2]}
"c" 
Run Code Online (Sandbox Code Playgroud)

bash

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

MATLAB:合并函数句柄

我目前正在使用MATLAB编写模拟代码,并且需要一些关于我一直遇到的问题的帮助.

我正在一个问题,即我有n单独的匿名功能手柄f_i,其中的每一个被存储在单元阵列functions,并接受一个1x1数字数组x_i,并返回一个1x1数字数组y_i.

我想结合这些匿名函数处理成接受一个单一的匿名函数手柄nX 1数值数组X,并返回单个nX 1-numeric阵列Y.在这里X(i) = x_i,Y(i) = y_i = f_i(x_i)

作为例子,让n = 2和F_1和F_2是两个函数处理输入和输出1x1阵列和被存储在一个单元阵列命名的功能

f_1 = @(x_1) x_1^2 
f_2 = @(x_2) x_2^3
functions = {f_1,f_2}
Run Code Online (Sandbox Code Playgroud)

我基本上需要能够使用的代码n,f_1f_2构造一个输入和输出2x1数字数组的函数句柄F.

F = @(x) [f_1(x(1,1));f_2(x(2,1))]
Run Code Online (Sandbox Code Playgroud)

matlab

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

在R中加载最近日期的文件

假设我有一个文件,我想加载R - 让我们称之为file.csv.将它加载到R中相当容易.

不幸的是,在我的情况下,存在这个文件的多个版本,并且每个文件都附加了一个日期......所以我在目录中真正拥有的是一个文件列表,例如:

file - 02-19-2013.csv
file - 02-18-2013.csv
file - 02-17-2013.csv

... 等等

我想知道如何在R中加载具有最新日期的文件?

r

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

如何在MATLAB中为轮廓图放置轮廓上的字符串标签

我想知道是否可以用一组用户定义的字符串标记MATLAB轮廓图的轮廓?

我目前正在使用以下代码截取器来生成标记的轮廓图:

%Create Data
X = 0.01:0.01:0.10
Y = 0.01:0.01:0.10
Z = repmat(X.^2,length(X),1) + repmat(Y.^2,length(Y),1)';

%Create Plot 
hold on
[C,h] = contourf(X,Y,Z);

%Add + Format Labels to Plot
hcl = clabel(C,h,'FontSize',10,'Color','k','Rotation',0);
set(hcl,'BackgroundColor',[1 1 1],'EdgeColor',[0 0 0],'LineStyle','-',)
hold off
Run Code Online (Sandbox Code Playgroud)

此代码的问题在于标签是由MATLAB自动生成的。即使我可以轻松更改标签的轮廓,也无法更改它们得到的标签。

理想情况下,我想用一组我自己定义的字符串来标记它们。但是,如果这不可能,那么我想知道是否可以更改标签的数字格式。原因是上面的代码实际上生成了错误率的轮廓图,我想将其显示为%值(即在轮廓标签中使用1%,而不是0.01等)。

matlab matlab-figure

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

在计算Logistic损失函数的值和梯度时避免数值溢出

我目前正在尝试实现一种涉及MATLAB中逻辑损失函数的机器学习算法.不幸的是,由于数字溢出,我遇到了一些麻烦.

通常,对于给定的输入s,逻辑函数的值为:

 log(1 + exp(s))
Run Code Online (Sandbox Code Playgroud)

并且逻辑损失函数的斜率是:

 exp(s)./(1 + exp(s)) = 1./(1 + exp(-s))
Run Code Online (Sandbox Code Playgroud)

在我的算法中,值为s = X*beta.这X是一个矩阵,每个数据点具有N数据点和P特征(即size(X)=[N,P]),并且betaP每个特征的系数向量size(beta)=[P 1].

我特别感兴趣的是计算给定值的Logistic函数的平均值和梯度beta.

Logistic函数的平均值为beta值为:

 L = 1/N * sum(log(1+exp(X*beta)),1)
Run Code Online (Sandbox Code Playgroud)

Logistic函数斜率的平均值为b值为:

 dL = 1/N * sum((exp(X*beta)./(1+exp(X*beta))' X, 1)'
Run Code Online (Sandbox Code Playgroud)

注意 size(dL) = [P 1].

我的问题是这些表达式不断产生数值溢出.问题有效地来自于一个事实,即exp(s)=Infs>1000exp(s)=0s<-1000.

我正在寻找一种解决方案,s可以采用浮点运算中的任何值.理想情况下,我也非常感谢一种解决方案,它允许我以矢量化/有效的方式评估值和梯度.

floating-point matlab numerical-methods numerical-stability logistic-regression

5
推荐指数
2
解决办法
2951
查看次数

在MATLAB中具有灵活的有序/无序和标记/未标记输入列表的函数

很多MATLAB函数都有一个输入结构,例如:

output = function MyFun(a,b,c,'-setting1',s1,'-setting2',s2,'-setting3',s3)
Run Code Online (Sandbox Code Playgroud)

我想知道如何在我自己的函数中实现这种功能.确切地说,我想知道如何创建一个函数,使得:

  1. 该函数具有可变数量的输入 N + M

  2. 第一个N输入是有序的和未标记的.在上面的例子中,N = 3.第一个输入始终是a,第二个输入始终b是第三个输入c.该函数的输入是用户变量不一定需要发送b,c; 当他们不这样做时,这些可以采用默认(硬编码)值.据我所知,这种类型的功能通常是通过处理varargin.

  3. 其余M输入是无序的,但标记为.在上面的例子中,M = 3中,变量是S1,S2,S3和他们的标签setting1,setting2setting3分别,我想为用户能够指定这些变量中的任何命令他们想要的.如果用户选择不指定其中一个输入(即setting1),那么我希望我的函数为其分配默认值s1.

这种功能的一个例子是dlmwrite功能.

理想情况下,我正在寻找一种MATLAB开发人员通常使用的方法,以便我的代码易于理解.

matlab variadic-functions argument-passing

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

如何使用knitr/Sweave中的R变量值在LaTeX中编写if-then语句

我目前正在使用knitr以及R 3.0.2和RStudio来生成LaTeX报告.我的报告输入为.Rnw文件,并使用knit2pdf函数进行编译.

我想在LaTeX中使用if-then公式来创建一个单独的部分,但if-then条件使用R中变量的值(让我们称之为CreateOptionalSection).

这可能吗?如果是这样,我如何在.tex文档中引用R变量?

latex r sweave knitr

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

在ggplot2中排除负y轴值

我想修改ggplot2上的y轴比例,以绘制我一直知道为正的值。

为了说明此问题,请考虑在绘制时生成的图形:

df = data.frame(x=seq(1,10),y=rep(0,10))
ggplot(df,aes(x,y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想在这种情况下将y轴的下限设置为0,而不指定y轴的最大值。如果可能的话,我想这样做在一个命令(因为我需要通常所说的facet_gridscales = free后,我创建这个图)

r ggplot2

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

R:如何为R6类定义多个构造函数?

我目前正在开发一个项目,我需要在R中构建一个R6类,可以通过多种方式进行初始化.我想知道最好的方法是什么.是否有可能使$new()功能过载?或者我需要定义辅助函数?

作为一个激励性的例子:我希望有一个R6类的两个构造函数,MyClass其中一个字段names可以使用向量variable_names或整数进行初始化n_variables(在这种情况下,它初始化一个默认的名称向量).

功能应该像这样工作:

#define the class (only has a constructor that accepts a vector of names)
myClass <- R6Class("myClass",
                   public = list(
                     names = NA,
                     initialize = function(names) {
                       if (!missing(names)) self$names <- names
                     })
)

#create a test object using a vector of names
variable_names = c("x","y")
a = myClass$new(variable_names)
a$names
#> [1] "x y"

#everything after here does not actually work (just to illustrate functionality)
n_variables …
Run Code Online (Sandbox Code Playgroud)

r r6

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