Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:保存While循环数据_Matlab_Loops_While Loop - Fatal编程技术网

MATLAB:保存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

我运行了一个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*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按空格键将每行缩进适当的次数:/请编辑您的问题