Borrar filtros
Borrar filtros

Error using load Must be a string scalar or character vector

70 visualizaciones (últimos 30 días)
Prateek Srivastava
Prateek Srivastava el 20 de Dic. de 2017
Comentada: Harish Ramachandran el 28 de Dic. de 2017
thanks a lot for your answer I now understand my mistake but after this when I am trying to write the rain flow script in order to reduce a spectrum of varying stress there is this error which is showing"Error using load Must be a string scalar or character vector.I am also attaching the script thanks in advance for your help.
  5 comentarios
Harish Ramachandran
Harish Ramachandran el 20 de Dic. de 2017
Is the signal in the .txt file? If so can you please attach that as well?
Jan
Jan el 21 de Dic. de 2017
@Prateek: The code
abs(s2-s1)>=abs(s2-s3),abs(s3-s4)>=abs(s2-s3)
% ^
does not make sense. The comma means, that both parts are evaluated, but independent from each other. A simplified code:
x = 1;
y = 2;
if x == 1, y == 7
Now the condition of the IF command is "x == 1". Afterwards y is compared to 7, but this does not concern the IF in any way. Maybe you want:
if abs(s2-s1)>=abs(s2-s3) & abs(s3-s4)>=abs(s2-s3)
% or
if abs(s2-s1)>=abs(s2-s3) | abs(s3-s4)>=abs(s2-s3)
But
if abs(s2-s1)>=abs(s2-s3) , abs(s3-s4)>=abs(s2-s3)
is equivalent to:
if abs(s2-s1)>=abs(s2-s3)

Iniciar sesión para comentar.

Respuestas (2)

Jan
Jan el 20 de Dic. de 2017
Editada: Jan el 20 de Dic. de 2017
I am trying to extract the first four values from my signal
The symbol "load" was not defined as a variable. Then the command load() is used, but this cannot be meant. I cannot know which variable is meant, perhaps B or t? Where do you expect "load" to be defined?
Other hints:
if abs(s2-s1)>=abs(s2-s3),abs(s3-s4)>=abs(s2-s3);
What is the purpose of the part behind the comma? Perhaps you want:
if abs(s2-s1)>=abs(s2-s3) & abs(s3-s4)>=abs(s2-s3)
"sign" is a built-in function. Shadowing it by a local variable can cause serious confusion if you want to use the function later on. Avoid to use the names of important Matlab functions as local variables. See:
clear('sign')
sign(2)
sign = rand(1, 10);
sign(2)
  5 comentarios
Prateek Srivastava
Prateek Srivastava el 21 de Dic. de 2017
yeah I got your point that load is a function that takes file name string so what can I use to copy the ith element of the array "load" to the variable s1?
Jan
Jan el 21 de Dic. de 2017
@Prateek Srivastava: There is no variable called "load" in your posted code. The error message means, that there is no such variable at all. In consequence, you cannot obtain the i.th element of this variable, because this variable does not exist at all.
Maybe you want the data of A or B?

Iniciar sesión para comentar.


Harish Ramachandran
Harish Ramachandran el 21 de Dic. de 2017
You imported the data and stored the stress values etc. inside a struct A. s1 should get the value from the structure instead of using load command.
A=importdata('rain.txt');
This will create a struct A with A.data containing your required values.
>> A.data
ans =
1 -10
2 10
3 0
4 30
5 -20
6 0
7 -10
8 20
9 0
If you want to get the first stress value - access it by indexing through 'A.data'
s1 = A.data(1,2)
s1 =
-10
>> s2 = A.data(2,2)
s2 =
10
and so on... Hope this helps.
  7 comentarios
Walter Roberson
Walter Roberson el 22 de Dic. de 2017
Editada: Walter Roberson el 22 de Dic. de 2017
Your code does not assign any value to i before it uses i
Harish Ramachandran
Harish Ramachandran el 28 de Dic. de 2017
Use a 'for' loop, initialize the value of i and then proceed to assignment. Or you could initialize and update the value of i accordingly in the 'while' loop.
Thank you Walter Roberson!

Iniciar sesión para comentar.

Categorías

Más información sobre Vibration Analysis en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by