Multiple values in the if-expression

21 visualizzazioni (ultimi 30 giorni)
Sam
Sam il 20 Dic 2014
Commentato: Amir Semnani il 19 Mar 2021
My data-file is a (5x5) matrix. Each cell is a struct. In this struct there is 1 datafile (and other files like 'columnsheaders'). I have created a for-loop for 5 measurements en 5 subjects. So I tried to create an 'if-expression' to say that if specific values of that matrix are met, the program should break. But it gives the following error: "The expression to the left of the equals sign is not a valid target for an assignment."
if ((i_testen = 4) & (welke_pp = 1)) | ((i_testen = 4) & (welke_pp = 3)) | ((i_testen = 4) & (welke_pp) = 4) | ((i_testen) = 4 & (welke_pp = 5)) | (i_testen <= 4)
break
RASI = data_sts(welke_pp,i_testen).VideoSignals(:, strcmp('RASI', data_sts(welke_pp,i_testen).VideoSignals_headers));
XY(2,1) = max(RASI)
XY(1,1) = 0;
Begin_Eind_sts.Begin(i_testen) = abs(XY(2,2));
Begin_Eind_sts.Eind(i_testen) = abs(XY(1,2));
close all
end

Risposta accettata

Star Strider
Star Strider il 20 Dic 2014
Your program is breaking on i_testen == 1 because at the end of the if statement conditions you have:
(i_testen <= 4)
that will cause the if condition to be true for i_testen == 1.
  6 Commenti

Accedi per commentare.

Più risposte (1)

Guillaume
Guillaume il 20 Dic 2014
To compare values together use ==, the equality comparison operator, not = which is the assignment operator
  3 Commenti
Sam
Sam il 20 Dic 2014
Modificato: Sam il 20 Dic 2014
Oh yeah, I see it. I adjusted my code, but now there is another error...
if ((i_testen == 4) & (welke_pp == 1)) | ((i_testen == 4) & (welke_pp == 3)) | ((i_testen == 4) & (welke_pp == 4)) | ((i_testen) == 4 & (welke_pp == 5))
break
else
RASI = data_sts(welke_pp,i_testen).VideoSignals(:, strcmp('RASI', data_sts(welke_pp,i_testen).VideoSignals_headers)); %extract data
XY(2,1) = max(RASI) %get the maximum for RASI
XY(1,1) = 0; %set the minimum to zero
Begin_Eind_sts.Begin(i_testen) = abs(XY(2,2)); %store the data in a struct
Begin_Eind_sts.Eind(i_testen) = abs(XY(1,2));
close all %close all opened figures
end
The error is: "Index exceeds matrix dimensions.
Error in examen_matlabproberenpp1if (line 59) Begin_Eind_sts.Begin(i_testen) = abs(XY(2,2));".

Accedi per commentare.

Categorie

Scopri di più su Structures in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by