how to automate this manual code containing if else conditons?
1 次查看(过去 30 天)
显示 更早的评论
i m creating a data based on values in variable seletion... if first value of selection is 1 it will pick data from Values cell 1 else if if contains 2 then from values cell 2... it works fine in this case but my data may change every time suppose now Selection = [1 1 1 2 2 2 3 3 3 3] and there are there sets of values or next time may b more or less.. how can i automate my code.. kindly guide..
0 个评论
采纳的回答
Stephen23
2024-2-15
S = [1 1 1 1 2 2 2 2 2 2];
V{1} = [20 10 40 50 40 30 20 10 20 30];
V{2} = [10 20 30 20 10 30 20 40 20 30];
M = vertcat(V{:});
Z = M(sub2ind(size(M),S,1:numel(S)))
0 个评论
更多回答(1 个)
Les Beckham
2024-2-15
编辑:Les Beckham
2024-2-15
Here is one approach. I eliminated the extraneous parameter ini for this example.
I'm not sure I understand the role of the Time vector here. This may not do what you want if the sizes of Time and Selection are not the same.
Time = 1:10;
Selection = [1 1 1 1 2 2 2 2 2 2];
Values{1} = [20 10 40 50 40 30 20 10 20 30];
Values{2} = [10 20 30 20 10 30 20 40 20 30];
Final = zeros(size(Time));
uniqueValues = unique(Selection);
for ii = 1:numel(uniqueValues) %<<< handles any number of unique values in Selection
Final(Selection == uniqueValues(ii)) = Values{ii}(Selection == uniqueValues(ii));
end
disp(Final)
2 个评论
Les Beckham
2024-2-15
You are quite welcome. Good catch on that indexing error. I'll fix the answer.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!