Error using mean: Too many input arguments.
2 ビュー (過去 30 日間)
古いコメントを表示
Dear MATLAB experts,
I keep on getting the error described in the title of the question and I don't know how to solve it. The implemented code is the one you find below.
stock_priceStats = table();
stock_priceStatsVars = stockprice_data.Properties.VariableNames;
for i = 1:width(stockprice_data)
colData = stockprice_data.(i);
stock_priceStats.(i) = mean(colData{:});
stock_priceStats.(i) = std(colData{:});
stock_priceStats.(i) = min(colData{:});
stock_priceStats.(i) = quantile(colData{:}, .25);
stock_priceStats.(i) = median(colData{:});
stock_priceStats.(i) = quantile(colData{:}, .75);
stock_priceStats.(i) = max(colData{:});
end
stock_priceStats.Properties.Variablenames = stock_priceStatsVars;
After also typing in the command window:
which -all mean
I get the following:
/Applications/MATLAB_R2021a.app/toolbox/matlab/datafun/mean.m
/Applications/MATLAB_R2021a.app/toolbox/matlab/datatypes/duration/@duration/mean.m % duration method
/Applications/MATLAB_R2021a.app/toolbox/matlab/datatypes/datetime/@datetime/mean.m % datetime method
/Applications/MATLAB_R2021a.app/toolbox/matlab/bigdata/@tall/mean.m % tall method
/Applications/MATLAB_R2021a.app/toolbox/matlab/timeseries/@timeseries/mean.m % timeseries method
/Applications/MATLAB_R2021a.app/toolbox/nnet/deep/@dlarray/mean.m % dlarray method
I would be really grateful if you could help me out with this.
Thank you in advance.
3 件のコメント
Stephen23
2021 年 9 月 29 日
The actual problem is that you are generating a comma-separated list and supplying multiple inputs to MEAN:
mean(colData{:})
% ^^^ comma-separated list
What do you expect that to achieve?
DGM
2021 年 9 月 29 日
Can you provide an example of stockprice_data so that I can replicate the issue?
採用された回答
DGM
2021 年 9 月 29 日
編集済み: DGM
2021 年 9 月 29 日
I'm not sure how these arrays are shaped or what the contents are, but I'm guessing you can do something like this:
mean(vertcat(colData{:}))
to collect the multiple outputs of coldata{:} into a single vector.
If that's the case, it would be more efficient to avoid replicating the operation:
stock_priceStats = table();
stock_priceStatsVars = stockprice_data.Properties.VariableNames;
for i = 1:width(stockprice_data)
colData = stockprice_data.(i);
colData = vertcat(colData{:});
% alternatively, you may simply be able to do it in one line
stock_priceStats.(i) = mean(colData);
stock_priceStats.(i) = std(colData);
stock_priceStats.(i) = min(colData);
stock_priceStats.(i) = quantile(colData, .25);
stock_priceStats.(i) = median(colData);
stock_priceStats.(i) = quantile(colData, .75);
stock_priceStats.(i) = max(colData);
end
3 件のコメント
DGM
2021 年 9 月 29 日
Maybe something like this
stock_priceStats = table();
stock_priceStatsVars = stockprice_data.Properties.VariableNames;
for i = 1:width(stockprice_data)
colData = stockprice_data.(i);
colData = vertcat(colData{:});
stock_priceStats.(i) = [mean(colData); std(colData); min(colData); ...
quantile(colData, .25); median(colData); ...
quantile(colData, .75); max(colData)];
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!