Index exceeds matrix dimensions

2 views (last 30 days)
Yussif M. Awelisah on 17 Sep 2019
Index exceeds matrix dimensions.
Error in tvf_emd (line 47)
trying to solve this problem in my code but im finding it difficult. Please can anyone help solve this problem for me. its urgent as I need to complete my paper.
attached are the codes and data used.

1 Comment

Walter Roberson on 17 Sep 2019

Walter Roberson on 17 Sep 2019
length is defined as:
temp = size(TheInput)
if any(temp == 0)
length is 0 no matter what the other dimensions are
else
length is max(temp)
end
length is not any particular dimension: for a matrix that is not empty, length is the largest dimension.
You then use effectively go row by row through temp_x, with the rows being length 231, which is less than num_padding, so using num_padding exceeds the end of the row.

Yussif M. Awelisah on 18 Sep 2019
Thanks alot for your explaination and concern. At this point Im lost of ideas. I even tried reshaping and transposing y into a row vector but yet that did not work.
y = temp_x
reshape(y,1,[]);
transpose (y);
y.'
y(:)
reshape(y.',1,[]);
flag_stopiter=0;
for iter=1:100;
At this juncture I want anyway possible that I can run this code on this data. I am at the final stage of my research paper but this issue is raisng fustrations.
I am pleased with your help. I hope you can run code and see how best I can solve this problem with this data.
Walter Roberson on 18 Sep 2019
Using length() is always wrong for this purpose.
Walter Roberson on 18 Sep 2019
I am not clear as to why you removed the for y loop ?
The code does not have enough documentation for me to understand what you want to do.
Did you remove the for y loop in an attempt to vectorize the calculations?
tt=1:numel(y);
That code is wrong for 2D arrays y.
It looks to me as if the best way to proceed would be to use a for loop whose indices were the row numbers of temp_x, and inside the loop,
y = temp_x(row_number, :);
After which you do the padding and so on.

Yussif M. Awelisah on 18 Sep 2019
Once again I am more than grateful. I only removed the for loop because originally the for loop wasnt there. I added the for loop to convert y into a row vector which stil didnt work. I have replaced it and tried it with the 'size' instead of length but same error still occurs.
I think I have taken alot of your time so I hope on your leisure time you can try to run the data on the code to feel how best this can be solved. The code run on tvf_emd(x) as the input variable . so x is the data I have attached. Also both the tvf_emd and splinfit work together.
Thanks alot .

Walter Roberson on 18 Sep 2019
It looks to me as if the best way to proceed would be to use a for loop whose indices were the row numbers of temp_x, and inside the loop,
y = temp_x(row_number, :);
After which you do the padding and so on.
As in
for row_number = 1 : size(temp_x,1)
y = temp_x(row_number, :);
....
end
Yussif M. Awelisah on 20 Sep 2019
I am grateful. I have all means but I finally decided to use the strnum to convert the data to numeric. this courses a problem I hope you wil have idea about:
Index of element to remove exceeds matrix dimensions.
Error in tvf_emd (line 131)
imf(nimf:MAX_IMF,:)=[]
again the data and code is attached.
Yussif M. Awelisah on 23 Sep 2019
y = temp_x;
y = temp_x(row_number, :);
flag_stopiter=0;
for iter=1:100
for row_number = 1 : size(temp_x,1)
y = temp_x(row_number, :);
end
Undefined function or variable "row_number".
Error in tvf_emd (line 44)
y = temp_x(row_number, :);
Please in this case how should the roe_number be defined?