使用matlab和fprintf将for循环中的数据放入表中

时间:2013-10-30 03:51:26

标签: matlab loops matrix printf

我试图将我的for循环中的以下数据放入格式化的表中,以便每列中有11个F值,总共有4列。

但我总是以我的数据的一长列而不是我想要的四列结束。我想知道是否有某种方法将数据放入矩阵然后重塑它,但我遇到了麻烦。非常感谢任何帮助。

fprintf ('Electrostatic Forces:\n')
 for  r = 1:4;
    q2 = 0: 1*10^-19: 1*10^-18;
        for F = coulomb(q2,r);
            fprintf ('%d\n',F)
    end
end

功能库仑的代码是

function F = coulomb (q2,r);
k = 8.98*10^9;
q1 = 1.6*10^-19;
F = k*abs(q1*q2)/r^2;

1 个答案:

答案 0 :(得分:2)

一种方法是:

fprintf ('Electrostatic Forces:\n')
q2 = 0: 1*10^-19: 1*10^-18;
for h = 1:numel(q2);

    % Coulomb function
    k = 8.98*10^9;
    q1 = 1.6*10^-19;
    F = k * abs(q1 * q2(h))./[1:4].^2;

    for r = 1:4;
        fprintf('%d ', F(r))
    end
    fprintf('\n')
end

另一种方法是将您的功能重新定义为

function F = coulomb (q2, r);
k = 8.98 * 10 ^ 9;
q1 = 1.6 * 10 ^ -19;
F = k * abs(q1 * repmat(q2(:)', numel(r), 1)) ./ (repmat(r(:), 1, numel(q2)) .^ 2);

然后你可以输入

q2 = 0: 1*10^-19: 1*10^-18;
r = 1:4;
F = coulomb(q2, r)'

你会有你的桌子。