2013-10-05 106 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