Borrar filtros
Borrar filtros

I am receiving this error : Subscripting a table using linear indexing (one subscript) or multidimensional indexing (three or more subscripts) is not supported.

4 visualizaciones (últimos 30 días)
When i try to run this code I'm receiving this error:
Subscripting a table using linear indexing (one subscript) or multidimensional indexing (three or more
subscripts) is not supported. Use a row subscript and a variable subscript.
a(1:11) %Imported data from excel
b(1:11) %Imported data from excel
c(1:11) %Imported data from excel
Resultant = sqrt(a*a + b*b + c*c);
Up = 180*atan2(a, sqrt(b*b + c*c))/pi;
Right = 180*atan2(b, sqrt(a*a + c*c))/pi;
while (0 < n < 11)
if (0 < Up || Right > 30)
disp('Fall is detected')
else
disp('No fall')
end
end
  2 comentarios
Dyuman Joshi
Dyuman Joshi el 23 de Ag. de 2022
The code you have showed us is incomplete
- There are no a, b anc c values defined/assigned.
- You have not initiated a loop counter nor is the loop counter updating according to conditions.

Iniciar sesión para comentar.

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 23 de Ag. de 2022
Editada: Dyuman Joshi el 23 de Ag. de 2022
a = readmatrix('a.xlsx');
b = readmatrix('b.xlsx');
c = readmatrix('c.xlsx');
%I have not suppressed the outcome so you can verify the values of a
%as the first value will be read as NaN (not a number)
a = a(2:11) %Imported data from excel
a = 1×10
-2.3000 -2.6000 -2.4000 -2.9000 -3.6000 2.9000 3.0000 3.6050 3.9800 2.0350
b = b(2:11); %Imported data from excel
c = c(2:11); %Imported data from excel
Resultant = sqrt(a.*a + b.*b + c.*c);
Up = 180*atan2(a, sqrt(b.*b + c.*c))/pi
Up = 1×10
-23.0245 -31.4445 -33.6392 -53.8149 -61.2833 51.4768 67.9266 53.7637 46.6764 33.7866
Right = 180*atan2(b, sqrt(a.*a + c.*c))/pi
Right = 1×10
-25.1592 -34.1804 -36.8788 -24.6751 -14.0999 -3.0929 -21.7576 -30.9710 -30.7839 -47.5465
%since there are 10 elements in the arrays, the index should go from 1-10
n = 1;
while (n < 11)
if (0 < Up(n) | Right(n) > 30)
disp('Fall is detected')
break %breaking the loop
else
disp('No fall')
end
n = n+1;
end
No fall No fall No fall No fall No fall
Fall is detected
  8 comentarios
Surabhi A S
Surabhi A S el 25 de Ag. de 2022
When I try to run this, I get values below 0 as well like -30,-40. So only I mentioned above 0
Dyuman Joshi
Dyuman Joshi el 25 de Ag. de 2022
That should not be happening, if x>30 then it is automatically x>0
Is your data still the same?

Iniciar sesión para comentar.

Más respuestas (1)

Abderrahim. B
Abderrahim. B el 23 de Ag. de 2022
Hi!
We don't import data from excel that way.
In your case better to use readmatrix:
A = readmatrix(yourFile.xlsx) ;
If you want to have the data as table use readtable:
tbl = readtable(yourFile.xlsx) ;
Hope this helps
  5 comentarios
Dyuman Joshi
Dyuman Joshi el 23 de Ag. de 2022
Editada: Dyuman Joshi el 23 de Ag. de 2022
Since you are looking to compare individual values, make this change
%replace
if (0 < Up | Right > 30)
%with
if (0 < Up(n) | Right(n) > 30)
and adjust the loop counter accordingly.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Import from MATLAB en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by