Я был бы очень признателен за помощь в этом.
Я пытаюсь сделать следующее.
В цикле for запустите 2 системные команды и получите выходные данные этих двух команддо всех трех элементов одной строки матрицы для каждой итерации цикла.Затем я хотел бы распечатать всю матрицу в файл Excel.
Я попытался это сделать:
for i=1:3,
command1 = ['fslmeants -i image1 -m example_' num2str(i) '.nii.gz' ]
C(i,1) = evalc('system([command1])')
command2 = ['fslstats example_' num2str(i) ' -V']
C(i,2:3) = evalc('system ([command2])')
end
Я получил следующее сообщение об ошибке:
???Назначение имеет больше не-одноэлементных rhs-измерений, чем не-одноэлементных подписок* Затем я попробовал
for i=1:3,
command1 = ['fslmeants -i image1 -m example_' num2str(i) '.nii.gz' ]
A = evalc('system([command1])')
command2 = ['fslstats example_' num2str(i) ' -V']
B = evalc('system ([command2)')
end
вывод для системы ([command1]), когда я не пытаюсь присвоить ему элемент матрицы, это
A =
0.302714
ans =
0
вывод для системы([command2]), когда я не пытаюсь присвоить ей матричные элементы, это
B =
1413 19506.814453
ans =
0
Если я тогда наберу B (1,2), я получу
ans =
4
, что даетмне вторая цифра первого числа в B, а не второе число (19506.814453), как я хотел.
Затем я проверил, был ли B массивом символов следующим образом:
ischar B
ans =
1
ИтакЯ полагаю, что если я смогу найти способ для matlab распознавать выходные данные system ([command1]) и system ([command2]) как 3 элемента одной строки для каждой итерации цикла for, который я бы отсортировал.
Так что в идеале первая строка Матрицы C должна быть
C(1,:) = [ 0.302714 1413 19506.814453 ]
, и при каждой итерации цикла for будет добавлена дополнительная строка.
Может кто-нибудьпросветить потерянную душу?