Index exceeds Matrix dimensions
1 次查看(过去 30 天)
显示 更早的评论
Hello
I am trying to run the following block of code-
for q = patient_num(1):patient_num(end)
flag=[];
i=0;
num = num2str(patient_num(q));
for j= file_num(1):file_num(end)
file = num2str(file_num(j));
record_file = strcat('explained','_','ch','_',num,'_',file,'-percent-explain-10', '.mat');
cd ('/scratch/group/eegnw/EEG/DATA/')
flag[i]=load('-mat',record_file);
i=i+1;
end
end
I want to check if this is running correctly or not by looking at the value of i at the end. I give inputs as patient_num=1:3, file_num=2:4. However, after running the outer loop for one patient_num, I get an error saying Index exceeds matrix dimensions. Basically the value of patient_num has changed from a vector [1 2 3] to just a scalar 1. I can't figure out why that is happening as my code doesn't modify that anywhere. Any help is appreciated.
Expected output- i=9
0 个评论
回答(3 个)
Walter Roberson
2016-7-7
Using that form of load() is not recommended. It is recommended that instead you assign the output of load() to a variable. The result will be a structure with one field for each variable stored in the file. You then extract the needed parts of the structure. This approach cannot accidentally overwrite unexpected variables like your current approach can.
James Tursa
2016-7-7
Is there a variable named patient_num in the mat file?
6 个评论
James Tursa
2016-7-7
编辑:James Tursa
2016-7-7
Please show your current code. Are you sure that patient_num is the expected vector at the start of this code? What happens if you comment out the load command and then run this section of code?
Star Strider
2016-7-8
The square bracket here is not legal MATLAB syntax:
flag[i]=load('-mat',record_file);
consider instead:
flag{i} = load('-mat',record_file);
4 个评论
Star Strider
2016-7-8
Here, yes. The indexing seems to be the problem, so sorting that first may be appropriate.
Also, there are no files to load. I would create one or more, but I have no idea what they actually contain, so I can’t simulate what the code does. I don’t understand where the matrix dimensions problem arises (other than initialising ‘i’ in the inner loop and expecting it to eventually equal the sum of iterations of the inner and outer loops, since it will currently count only to whatever the inner loop limit is).
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!