help with eval function - calculating multiple arrays at once

3 ビュー (過去 30 日間)
Euan Muir
Euan Muir 2021 年 3 月 13 日
回答済み: Walter Roberson 2021 年 3 月 13 日
Hi, I need to calculate a seperate array for 'speedMsAWP' for each the speedMS values 1 to 12. So one the code had finished running I would have 12 unique speedMsAWP arrays that were calculated with the speedMS arrays(1 to 12). I was recommened to use the eval function to do this. Any help appreciated.
The code below is what I have so far
speedMS1 = speedMS(1:744,:);
speedMS1 = speedMS1(:);
speedMS2 = speedMS(745:1416,:);
speedMS2 = speedMS2(:);
speedMS3 = speedMS(1417:2160,:);
speedMS3 = speedMS3(:);
speedMS4 = speedMS(2161:2880,:);
speedMS4 = speedMS4(:);
speedMS5 = speedMS(2881:3624,:);
speedMS5 = speedMS5(:);
speedMS6 = speedMS(3625:4344,:);
speedMS6 = speedMS6(:);
speedMS7 = speedMS(4345:5088,:);
speedMS7 = speedMS7(:);
speedMS8 = speedMS(5089:5832,:);
speedMS8 = speedMS8(:);
speedMS9 = speedMS(5833:6552,:);
speedMS9 = speedMS9(:);
speedMS10 = speedMS(6553:7296,:);
speedMS10 = speedMS10(:);
speedMS11 = speedMS(7297:8016,:);
speedMS11 = speedMS11(:);
speedMS12 = speedMS(8017:8760,:);
speedMS12 = speedMS12(:);
a = 0.11
speedMsAWP(1 to 12) = speedMS(1 to 12) *((30/31)^a);

採用された回答

Walter Roberson
Walter Roberson 2021 年 3 月 13 日
bounds = [1 745 1417 2161 2881 3625 4345 5809 5833 6553 7297 8017 8761];
if size(speedMS,1) > bounds(end)
bounds(end+1) = size(speedMS,1)+1;
end
speedMSCells = mat2cell(spedMS, diff(bounds), size(speedMS,2));
speedMSCells = speedMSCells(1:12); %discard anything after 8760
c = (30/31).^0.11;
speedMSAWPcells = cellfun(@(C) C(:).*c, speedMSCells, 'uniform', 0);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by