matlab - 在 Matlab 中存储迭代结果

标签 matlab

我有下面的代码。

for k=40:10:80
 T(k)=273.15+k;
 z=[0.2 0.2 0.2 0.4];
 W_PR=0.245;
 C=4;
 omega=[0.344 0.467 0.578 0.789];
 Tc=[600 700 500 570];
 Pc=[50 70 58 76];
    for c=1:C

        x_PR(1,c)=z(c)/(1+W_PR*(K_PR(c)-1));
        x_PR(2,c)=K_PR(c)*x_PR(1,c);
    end
    for c=1:C
        kappa_PR=0.37464+1.54226.*omega(c)-0.26992.*omega(c).^2;
        alpha_PR=(1+kappa_PR.*(1-sqrt(T(k)./Tc(c)))).^2;
        a_PR(c,c)=0.45724.*R.^2.*Tc(c).^2./Pc(c).*alpha_PR;
        b_PR(c)=0.07780*R.*Tc(c)./Pc(c);
    end
    for c=2:C
        for n=1:(c-1)
            a_PR(c,n)=sqrt(a_PR(c,c).*a_PR(n,n));
            a_PR(n,c)=a_PR(c,n);
        end
    end
    for c=1:C
        A_PR(c,c)=a_PR(c,c).*P./(R.*T(k)).^2;
        B_PR(c)=b_PR(c).*P./(R.*T(k));
    end
    for c=1:C
        Z(c,c)=A_PR(c,c)./5;
        V(c)=B_PR(c).*6;
    end
end

每次运行代码时,我都想要每个 T(k) 处的 Z 和 V 的结果。 该代码只给出一个 T 值的结果,尽管我希望它运行循环并给出所有 T(k) 的 Z 和 V 的结果。

最佳答案

您可能希望在主循环之外定义一些参数,至少预先分配存储空间。

Z_store = ones(C,C,5); % if you want to use a 3d matrix

V_store = ones(5,C);

新功能:

function [Z_store V_store] = SO_test1()
  z=[0.2 0.2 0.2 0.4];
  W_PR=0.245;
  C=4;
  omega=[0.344 0.467 0.578 0.789];
  Tc=[600 700 500 570];
  Pc=[50 70 58 76];
  R=8.314; 
  P=20; 
  Z_store = ones(C,C,5);
  V_store = ones(5,C);
  K_PR=[1.546e-2, 0.456, 1.432e2, 14.32];
  iter = 0;

for k=40:10:80

T(k)=273.15+k;
  for c=1:C
      x_PR(1,c)=z(c)/(1+W_PR*(K_PR(c)-1));
      x_PR(2,c)=K_PR(c)*x_PR(1,c);  
      kappa_PR=0.37464+1.54226.*omega(c)-0.26992.*omega(c).^2;
      alpha_PR=(1+kappa_PR.*(1-sqrt(T(k)./Tc(c)))).^2;
      a_PR(c,c)=0.45724.*R.^2.*Tc(c).^2./Pc(c).*alpha_PR;
      b_PR(c)=0.07780*R.*Tc(c)./Pc(c);
  end
  for c=2:C
      for n=1:(c-1)
          a_PR(c,n)=sqrt(a_PR(c,c).*a_PR(n,n));
          a_PR(n,c)=a_PR(c,n);
      end
  end
  for c=1:C
      A_PR(c,c)=a_PR(c,c).*P./(R.*T(k)).^2;
      B_PR(c)=b_PR(c).*P./(R.*T(k)); 
      Z(c,c)=A_PR(c,c)./5;
      V(c)=B_PR(c).*6;
  end
  iter = iter + 1;
  Z_store(:,:,iter) = Z;
  V_store(iter,:) = V;

  end
end

关于matlab - 在 Matlab 中存储迭代结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234048/

相关文章:

matlab - Matlab fmincon-找不到可行的解决方案,但没有发现错误

matlab - movie2avi - 如何修复帧大小?

python - 对大型数据集(2 亿个变量)运行逻辑回归的有效方法是什么?

arrays - 从 N x 1 数组-Matlab 创建 N x 2 数组

MATLAB 查找函数引用

函数执行的matlab时间限制

python - 如何在 Python 中设置 MATLABPATH 并使用 mlabwrap?

matlab - 在 Matlab 中绘制球体时如何定义半径?

matlab - 更改列表框中字符串的颜色 - MATLAB GUI

svm - 如何设置LIBSVM Matlab接口(interface)?