数组在matlab中的整数。你怎么做呢

时间:2014-03-20 02:08:16

标签: matlab

x=[.4 1 1.4 1.9 2.4]
y=[.3 .6 .9 1.2 1.5]
for (i=1:10)
    for (j=1:10)
        T(x,y)=x.^2+.6.*x.*y.^3-2.*y.^4
    end
end
surf(T')

我有这个,我得到错误“下标索引必须是真实的 正整数或逻辑。“我被告知它因为我的x和y是数组而不是整数但我如何使它们成为整数?

2 个答案:

答案 0 :(得分:1)

[X, Y] = meshgrid([.4 1 1.4 1.9 2.4], [.3 .6 .9 1.2 1.5]);
T = X.^2+.6.*X.*Y.^3-2.*Y.^4;
surf(T');

答案 1 :(得分:1)

您的尝试存在一些问题。

下式给出:

x = [.4 1 1.4 1.9 2.4]
y = [.3 .6 .9 1.2 1.5]

1)您正在迭代比实际更多的元素:for (i=1:10)应该是for (i=1:5) - 但您不应该使用ij作为迭代变量。所以使用:

for ii = 1:numel(x)          %// numel(x) = number of elements of x = 5

2)对于变量T的索引,您需要使用迭代变量,而不是xy本身。

循环可能如下所示:

for ii = 1:numel(x)          
    for jj = 1:numel(y)      
        T(ii,jj)= x(ii)^2 + .6*x(ii)*y(jj)^3 - 2*y(jj)^4;
    end
end
surf(T)

您可以在answer of Gastón

中找到更短的版本
[X, Y] = meshgrid(x, y);
T = X.^2 + .6.*X.*Y.^3 - 2.*Y.^4;
surf(T');

您可能想知道为什么需要转置T - 那是因为meshgrid交换输入。 或者使用ndgrid

[X, Y] = ndgrid(x, y);
T = X.^2+.6.*X.*Y.^3-2.*Y.^4;
surf(T);

所有三人都回来了:

enter image description here

由于x-axisy-axis与您的实际值完全无关,因此

没有多大意义。因此,你的表面会变形。使用X的输出Ymeshgrid作为surf的附加输入:

surf(X,Y,T');

重新调整我想你想要的数字:

enter image description here