how to automate this manual code containing if else conditons?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
taimour sadiq
il 15 Feb 2024
Modificato: Les Beckham
il 15 Feb 2024
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1618103/image.png)
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 Commenti
Risposta accettata
Stephen23
il 15 Feb 2024
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 Commenti
Più risposte (1)
Les Beckham
il 15 Feb 2024
Modificato: Les Beckham
il 15 Feb 2024
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 Commenti
Les Beckham
il 15 Feb 2024
You are quite welcome. Good catch on that indexing error. I'll fix the answer.
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!