How do I input my data in the correct format to overcome the problem "unable to peform assignment with 0 elements on the right hand side"
1 回表示 (過去 30 日間)
古いコメントを表示
I am running matlab on an HPC and wish to create multiple array jobs changing the variable in Examplescript (Opts) to the name of the file in 'testfiles.txt'. I am unable to overcxome the problem "unable to peform assignment with 0 elements on the right hand side" when creating the variable Opts.subject = data{i}.
My code is:
i = getenv('PBS_ARRAY_INDEX')
index = str2num(i)
f = fopen( 'testfiles.txt' )
data = textscan(f, '%s' )
fclose(f)
Opts.subject = data{i}
Opts.subject
Examplescript (Opts)
'testfiles.txt' contains:
003_S_4136
006_S_4192
006_S_4546
Your help would be most welcome.
2 件のコメント
Bob Thompson
2018 年 12 月 4 日
The error would seem to indicate that data is an empty array. Are you sure that the textscan command is properly scanning your file?
回答 (1 件)
Cris LaPierre
2018 年 12 月 5 日
編集済み: Cris LaPierre
2018 年 12 月 5 日
Your main issue is that, apparently, i is a char. At least you use str2num to convert it when creating index. You should therefore be using 'index' instead of 'i' in your assignment.
Opts.subject = data{index}
However, there is, I suspect, another issue.
data is a 1x1 cell.
data{1} is a 3×1 cell array:
{'003_S_4136'}
{'006_S_4192'}
{'006_S_4546'}
data{1}{index} (where index = 1) is '003_S_4136'.
Your code makes me think you want to pull out the first subject id, not all 3 at once.
2 件のコメント
Cris LaPierre
2018 年 12 月 5 日
Maybe. It all depends on what your code does. What does running all 3 at once mean?
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!