MATLAB:保存While循环数据
我运行了一个while循环,遇到了一些问题 我有以下代码:MATLAB:保存While循环数据,matlab,loops,while-loop,Matlab,Loops,While Loop,我运行了一个while循环,遇到了一些问题 我有以下代码: Angle_int = 0.5; % Initial interpolation angle of attack Clmax2d(1,1:length(Yle_wing)) = 3; % Dummy value diff = 0; % Dummy value while sum(diff < 0) > fix(tol*l
Angle_int = 0.5; % Initial interpolation angle of attack
Clmax2d(1,1:length(Yle_wing)) = 3; % Dummy value
diff = 0; % Dummy value
while sum(diff < 0) > fix(tol*length(Yle_wing))
Angle_int = Angle_int + 0.5; % Interpolation angle increases with 0.5 with every iteration
for j = 1:length(Yle_wing)
CL3d = interp1(Angle,[cl_matrix(1,j) cl_matrix(2,j) cl_matrix(3,j)],Angle_int,'linear');
CL_3DD(:,j) = CL3d;
end
diff = (Clmax2d - CL_3DD); % Difference between Cl2d and Cl3d
Angle_stall = Angle_int;
CL_3D = CL_3DD;
end
Angle_int=0.5;%初始内插迎角
Clmax2d(1,1:长度(机翼))=3;%虚拟值
差异=0;%虚拟值
而和(差<0)>固定(tol*长度(Yle_wing))
角度=角度+0.5;%插值角度随每次迭代增加0.5
对于j=1:长度(机翼)
CL3d=interp1(角,[cl_矩阵(1,j)cl_矩阵(2,j)cl_矩阵(3,j)],角,[u int,'linear');
CL_3DD(:,j)=CL3d;
结束
差异=(Clmax2d-CL_3DD);%Cl2d和Cl3d之间的差异
角度=角度;
CL_3D=CL_3DD;
结束
出于某种原因,CL_3D=CL_3DD代码>和角度\u失速=角度\u int代码>似乎在while循环结束时消失。因此,我不能在while循环之前使用它们的收敛值,因为这些变量无法识别。我得到以下错误:
未定义的函数或变量“CL_3D”
因此,有人知道我做错了什么吗?或者任何提示都是受欢迎的
提前感谢,,
干杯错误消息:
未定义的函数或变量“CL_3D”
总是因为您试图使用尚未初始化的变量或函数。这通常发生在循环中,在循环中,您希望递增计数器或比较值等
一个常见错误是这样做时没有在循环前面写入ii=0
:
while ii < some_num
ii = ii + 1;
some_function();
end
而ii
使用伪变量,您永远不会进入循环(除非tol<0
,这似乎是一个奇怪的选择)。您可能想要初始化diff=Inf
或类似的东西。但是,使用diff
作为变量名不是一个好主意,因为
您可能会尝试在尚未初始化时使用CL_3D
(在代码的其他地方,而不是在您发布的部分中)。MATLAB告诉您错误出现在哪一行,您应该尝试使用它
可能像zero(size(Clmax2d))一样初始化它代码>可以工作(它肯定会删除您的错误,但可能不会提供所需的行为)
PS
因为它们代表MATLAB中的虚拟单位。请修正缩进,因为您有嵌套循环,这很难理解。你确定这些循环没有包含在一个超出范围的函数中吗?另外,不要使用diff
作为变量名,因为你将屏蔽Matlab中非常有用的diff
函数。是的,我不知道如何正确显示我的代码。我知道压痕有问题。我确信我的功能不会超出范围。哦,好提示,谢谢@Dan@BalrajBoyal按空格键将每行缩进适当的次数:/请编辑您的问题