在R语言中”Sapply”函数在MATLAB中的对应函数,用于将R代码转换为MATLAB

我想将R语言中的代码转换为MATLAB(不是在MATLAB中执行R代码)。R语言中的代码如下:

data_set <- read.csv("lab01_data_set.csv")# get x and y valuesx <- data_set$xy <- data_set$y# get number of classes and number of samplesK <- max(y)N <- length(y)# calculate sample meanssample_means <- sapply(X = 1:K, FUN = function(c) {mean(x[y == c])})# calculate sample deviationssample_deviations <- sapply(X = 1:K, FUN = function(c) {sqrt(mean((x[y == c] - sample_means[c])^2))})

为了在MATLAB中实现,我编写了以下代码:

%% Reading Data% read data into memoryX=readmatrix("lab01_data_set(ViaMatlab).csv");% get x and y valuesx_read=X(1,:);y_read=X(2,:);% get number of classes and number of samplesK = max(y_read);N = length(y_read);% Calculate sample mean - 1st method% funct1 = @(c) mean(c);% G1=findgroups(y_read);% sample_mean=splitapply(funct1,x_read,G1)% Calculate sample mean - 2nd methodfor m=1:3sample_mean(1,m)=mean(x(y_read == m));endsample_mean;% Calculate sample deviation - 2nd methodfor m=1:3sample_mean=mean(x(y_read == m));sample_deviation(1,m)=sqrt(mean((x(y_read == m)-sample_mean).^2));sample_mean1(1,m)=sample_mean;endsample_deviation;sample_mean1;

如您所见,我知道如何在MATLAB中使用for循环来替代R语言中的sapply(如代码中的第二种方法),但不知道如何使用函数(可能是splitapply或其他函数)。

PS: 不知道如何上传数据,对此部分表示歉意。


回答:

R语言中的sapply在MATLAB中的对应函数是arrayfun – 以及它的相关函数cellfunstructfunvarfun,具体取决于您的输入数据类型。

例如,在R语言中:

> sapply(1:3, function(x) x^2)[1] 1 4 9

在MATLAB中等同于:

>>> arrayfun(@(x) x^2, 1:3)ans =     1    4    9

请注意,如果您传递给arrayfuncellfun等函数的函数结果对每个输入没有相同类型或大小,则需要指定'UniformOutput', 'false'

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注