我非常感謝這方面的幫助。MATLAB - 在for循環中從系統命令的輸出構建矩陣
我正在嘗試以下操作。
在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尺寸大於非單標
錯誤==> name_of_script在8 C(I,1)= EVALC( '系統([命令1])')
我然後試圖此
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
輸出系統([命令1])的時候,不嘗試將矩陣元素分配給它是
A =
0.302714
ans =
0
對於系統的輸出([命令2])時,我不不要嘗試分配矩陣元素t ·其是
B =
1413 19506.814453
ans =
0
如果我然後鍵入B(1,2),我得到
ans =
4
這使我在B中的第一數目的第二位,而不是所述第二數量(19506.814453)作爲我想了。
我然後檢查是否B爲一個字符數組如下:
ischar B
ans =
1
所以我想如果我能找到爲MATLAB識別系統的輸出([命令1])和系統的方式([命令2 ])作爲for循環的每次迭代的同一行的3個元素,我將被排序。
那麼理想,矩陣C的第一行會
C(1,:) = [ 0.302714 1413 19506.814453 ]
和一個額外的行會與循環的每次迭代中添加。
任何人都可以啓發失落的靈魂嗎?
'ischar B'等同於'ischar('B')',因此即使您沒有這樣的變量,您也會獨立於變量B的內容而獲得1。而不是'ischar(B)'。 – yuk 2012-02-07 18:36:05