フィルターのクリア

Looping these equations over multiple workspace variable names

1 回表示 (過去 30 日間)
Lewis Holden
Lewis Holden 2017 年 2 月 6 日
編集済み: Stephen23 2017 年 2 月 6 日
I have this code which calculates the mean value of all wind speeds in the 99th percentile. The trouble is I have wind data for 1949-1999 in the workspace (named nineteen_49 through to 99) I am struggling to make a loop which calls the name of the new variable each time and also creates new variables in place of x, y and j - can anybody help?:
% calculate value of 99th percentile value for wind spd
x = prctile(nineteen_49(:,6),99)
% create logical matrix that corresponsds to all wind speed values of great
% than 99th percentile (collecton o 0's and 1's where 1 denotes the
% location of each value great > x
y = nineteen_49(:,6) > x
% create a vector j that is the 6th column of 1949 (ie just speeds)
j = nineteen_49(:,6)
% calculate the mean of 99th percentile values
mean_99th_percentile_1949 = mean(j(y))
% calculate the frequency of events over

採用された回答

Geoff Hayes
Geoff Hayes 2017 年 2 月 6 日
Lewis - just use an numeric (or cell) array to store all your wind data for each year instead of having all of this data spread about many variables which would require you to do the above. See Stephen's answer at https://www.mathworks.com/matlabcentral/answers/105936-how-to-make-dynamic-variable-names-a1-a2-an-with-for-loop-using-eval-num2str which describes why it isn't a good idea to create dynamically named variables in MATLAB.
  2 件のコメント
Lewis Holden
Lewis Holden 2017 年 2 月 6 日
Thankyou Geoff.
I have created a cell array with all my data but I am still struggling to try and implement the code above to all the data because when I try to loop through the cell array this doesn't work, see below. Any ideas? Thanks for your help.:
mean_99th_percentiles = zeros(1,68)
for i = 1:68
mean_99th_percentile{i} = mean(prctile(my_cell{:,i}(:,6),99));
end
Stephen23
Stephen23 2017 年 2 月 6 日
編集済み: Stephen23 2017 年 2 月 6 日
N = 68;
mean99per = nan(1,N);
for k = 1:N
mean99per(k) = mean(...);
end
You were using the wrong kind of brackets. zeros creates a numeric array, not a cell array. Learn about cell arrays here:

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by