MATLAB Answers

0

Strange error with use of the function."diff"

Pedro Guevara さんによって質問されました 2019 年 6 月 28 日
最新アクティビティ Pedro Guevara さんによって 回答されました 2019 年 6 月 29 日
Good morning. I request your help with a very strange problem that is happening to me. It happens that I have a code (of 664 lines of code) in which there is a very punctual part in which I use the function -diff-. The programming in said worked well and according to my needs, but then I had to add some lines of code before the part that contained the programming with the function -diff- (this part of the code that I had to add helped me to create it a user from the matlab help forum, here the link: https://la.mathworks.com/matlabcentral/answers/468864-how-can-i-show-a-matrix-of-type-cell-in-a-msgbox?s_tid=prof_contriblnk). The lines of code that helped me create the partner worked wonders for what I needed, however the part that I had programmed (the one that contained the -diff- function) had stopped working, showing an error:
467 [FxNT,FyNT]=size(NodosT);
469 Num_nodos = ( NodosT ( 1:FxNT , 2 ) )' ;
470 X = diff(Num_nodos)~=0;
Index exceeds matrix dimensions.
Error in form2>CalcularDin_Callback (line 470)
X = diff(Num_nodos)~=0;
form2>CalcularDin_Callback
hObject handle to CalcularDin (see GCBO)
eventdata reserved - to be defined in a future version of MATLAB
handles structure with handles and user data (see GUIDATA)
I do not know if it is necessary to send you all my code lines before and after the introduction of the code lines.
I enclose all my code lines before and after (in two zip) of the introduction of the code lines. The error occurs on line 614 of the code with the new programming (a zip file named "latest").
The enter to get to that line of code does as follows:
1) In the "form1.fig" the "import" button is given and this file is placed in the excel, then the "Matrix rigides K's" button is given
2) The "form2.fig" is automatically opened where you can fill the fields with this information:
* In the table of 3 rows: -file 1: floor: 3, mass: 30000 -file 2: floor: 2, mass: 20000 -file 3: floor: 1, mass: 10000
* Number of porticos (edit text): 1
* Panel: Fv: 1.9 Fa: 1.3 Aa: 0.25 Av: 0.25 I = 1.
3) Click on the button -calculate-
I hope someone helps me find where the error may be, since it does not seem to be obvious at all. Thank you.

  0 件のコメント

サインイン to comment.

製品


リリース

R2017b

2 件の回答

Stephen Cobeldick
回答者: Stephen Cobeldick
2019 年 6 月 28 日
編集済み: Stephen Cobeldick
2019 年 6 月 28 日
 採用された回答

"...since it does not seem to be obvious at all. "
On multiple lines of form2 you define a variable named diff, like this:
diff = maxLength - length (num2str (Sa_C{count1,count2}));
%^^^ do NOT name a variable DIFF, otherwise you cannot use the DIFF function!
This occurs on lines 371, 432, 503, 579. And then on line 604 you think that you are calling the function diff, but in fact you are just accessing one of those variables.
Change the names of those variables, to something that is not the name of a MATLAB function.

  1 件のコメント

Guillaume
2019 年 6 月 28 日
Note that a big clue that this was the problem is the text of the error message:
X = diff(Num_nodos)~=0;
Index exceeds matrix dimensions.
The only thing that matlab can interpret as indexing on this line is diff(index) and thus matlab thinks that diff is a variable, not a function.

サインイン to comment.


回答者: Pedro Guevara 2019 年 6 月 29 日

I'm an idiot. Sorry, I did not remember that variable. Thank you.

  0 件のコメント

サインイン to comment.



Translated by