Filter löschen
Filter löschen

How can i rewrite this logic for n elements?

1 Ansicht (letzte 30 Tage)
Sumanth
Sumanth am 28 Feb. 2023
Kommentiert: Walter Roberson am 28 Feb. 2023
if q(1,1) == 1
disp("q1 is selected")
D = D1;
P= P1;
elseif q(1,2) == 1
disp("q2 is selected")
D = D2;
P= P2;
elseif q(1,3) == 1
disp("q3 is selected")
D = D3;
P= P3;
end
Hello I have to re-write this logic for 10elements i.e what if q array consists of 1*10 slots unlike above i have just 3. also it is very unpredictable that when the value of q elements can be 1.
  4 Kommentare
Torsten
Torsten am 28 Feb. 2023
yes to what ?
Sumanth
Sumanth am 28 Feb. 2023
exactly one of the q values = 1.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 28 Feb. 2023
Bearbeitet: Walter Roberson am 28 Feb. 2023
Or...
Dvals = [D1, D2, D3, D4, D5, D6, D7, D8, D9, D10];
Pvals = [P1, P2, P3, P4, P5, P6, P7, P9, P9, P10];
idx = find(q == 1, 1); %first
if ~isempty(idx)
D = Dvals(idx);
P = Pvals(idx);
else
uh oh
end
  3 Kommentare
John D'Errico
John D'Errico am 28 Feb. 2023
@Sumanth So then learn to use arrays in their many forms, possibly multidimensional arrays, or cell arrays.
Walter Roberson
Walter Roberson am 28 Feb. 2023
Dvals = {D1, D2, D3, D4, D5, D6, D7, D8, D9, D10};
Pvals = {P1, P2, P3, P4, P5, P6, P7, P9, P9, P10};
idx = find(q == 1, 1); %first
if ~isempty(idx)
D = Dvals{idx};
P = Pvals{idx};
else
uh oh
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by