给定一个整数向量,例如:
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) 我最近发现,它可能有猛砸设置一个变量时变量未设置(如中描述的默认值这个职位).
不幸的是,当默认值是数组时,这似乎不起作用.作为一个例子考虑,
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) 我目前正在使用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_1并f_2构造一个输入和输出2x1数字数组的函数句柄F.
F = @(x) [f_1(x(1,1));f_2(x(2,1))]
Run Code Online (Sandbox Code Playgroud) 假设我有一个文件,我想加载R - 让我们称之为file.csv.将它加载到R中相当容易.
不幸的是,在我的情况下,存在这个文件的多个版本,并且每个文件都附加了一个日期......所以我在目录中真正拥有的是一个文件列表,例如:
file - 02-19-2013.csv
file - 02-18-2013.csv
file - 02-17-2013.csv
... 等等
我想知道如何在R中加载具有最新日期的文件?
我想知道是否可以用一组用户定义的字符串标记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中逻辑损失函数的机器学习算法.不幸的是,由于数字溢出,我遇到了一些麻烦.
通常,对于给定的输入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]),并且beta是P每个特征的系数向量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)=Inf当s>1000与exp(s)=0时s<-1000.
我正在寻找一种解决方案,s可以采用浮点运算中的任何值.理想情况下,我也非常感谢一种解决方案,它允许我以矢量化/有效的方式评估值和梯度.
floating-point matlab numerical-methods numerical-stability logistic-regression
很多MATLAB函数都有一个输入结构,例如:
output = function MyFun(a,b,c,'-setting1',s1,'-setting2',s2,'-setting3',s3)
Run Code Online (Sandbox Code Playgroud)
我想知道如何在我自己的函数中实现这种功能.确切地说,我想知道如何创建一个函数,使得:
该函数具有可变数量的输入 N + M
第一个N输入是有序的和未标记的.在上面的例子中,N = 3.第一个输入始终是a,第二个输入始终b是第三个输入c.该函数的输入是用户变量不一定需要发送b,c; 当他们不这样做时,这些可以采用默认(硬编码)值.据我所知,这种类型的功能通常是通过处理varargin.
其余M输入是无序的,但标记为.在上面的例子中,M = 3中,变量是S1,S2,S3和他们的标签setting1,setting2并setting3分别,我想为用户能够指定这些变量中的任何命令他们想要的.如果用户选择不指定其中一个输入(即setting1),那么我希望我的函数为其分配默认值s1.
这种功能的一个例子是dlmwrite功能.
理想情况下,我正在寻找一种MATLAB开发人员通常使用的方法,以便我的代码易于理解.
我想修改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_grid用scales = free后,我创建这个图)
我目前正在开发一个项目,我需要在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)