2013-10-05 103 views
2

我試圖繪製一個數據單元陣列,在這裏我根據給定的theta't'求解半徑'ry'。我正在使用for循環來將數據存儲在這個單元格數組中。在MATLAB中繪製單元陣列

for t = 0:pi/100:2*pi 
    cell(n,1) = t; 
    cell(n,2) = (1/4*pi)*((K1c/Sys)^2)*(1+cos(t)+(3/2)*(sin(t/2)^2)); 
    n=n+1; 
end; 

其中K1c = 45和Sys = 40我的問題是試圖繪製這個單元格。顯然,它不像使用圖(單元格)或使用圖(單元格(n,1),單元格(n,2))那麼簡單。任何建議將不勝感激。

謝謝你們,

科迪

+0

你能單元陣列轉換爲數值數組?使用函數cell2mat http://www.mathworks.com/help/matlab/ref/cell2mat.html並繪製矩陣。 – Cici

+0

,你是否必須爲此使用單元陣列? – Cici

+0

你既不需要細胞也不需要循環。它有一個3行代碼,包括「繪圖」。這裏有一個提示:將t定義爲'0:pi/100:2 * pi'並繼續。只需使用簡單的變量來存儲輸出。 –

回答

2

您不使用電池陣列。您存儲數據的方式是普通矩陣。 繪圖命令然後

plot(cell(:, 1), cell(:, 2)) 

如果你想存儲在單元格數據,你不得不您的基質細胞重新分配給其他變量(如細胞在MATLAB中保留的表達)

a = cell; 
clear cell; 
b = cell(1, 2) %Create 1x2 cell 
b{1} = a(:, 1); 
b{2} = a(:, 2); 
plot(b{1}, b{2}); 
1

你不需要使它變得如此複雜。 Matlab被設計爲可以輕鬆處理整個向量和矩陣的數據,而不需要循環。

t = 0: pi/100: 2*pi; 
y = (pi/4) * (45/40)^2 * (1 + cos(t) + 3/2 * sin(t/2).^2); 
plot(t, y) 

導致

enter image description here