我怎样才能在matlab中构建算法?

时间:2014-04-15 15:05:10

标签: matlab

我在Matlab中构建算法存在问题。

鉴于:x(1)x(2)

然后:

x(3)=(x(1) + x(2))/2

x(4)=(x(1) + x(3))/2

x(5)=(x(3) + x(2))/2

x(6)=(x(1) + x(4))/2

x(7)=(x(3) + x(2))/2

...  

x(1)=0x(2)=1,然后x(3)=0.5(中点),x(4)=0.25x(1)x(3)之间的中点),{{ 1}}(x(5)=0.75x(3)之间的中点),x(2)x(6)x(1)之间的中点,x(4)x(7)之间的中点{1}}和x(3) ...

这意味着第一次迭代得到3分(x(5)x(1)x(3)),第二次迭代产生5分(x(2),{{1} },x(1)x(4)x(3)),第三次迭代得到9分(x(5)x(2)x(1),{{1} },x(6)x(4)x(7)x(3)x(8))。最后,x(5)次迭代将产生x(9)个点。

如何使用Matlab实现此逻辑?

1 个答案:

答案 0 :(得分:1)

现在你已经清楚了。 :)

你想要的是这个:

clear x;
x(1) = 7; % For example
x(2) = 11; % For example

nIter = 3;

for i = 1:nIter
    newX = zeros(1, 2 * numel(x) - 1);
    newX(1:2:end) = x;
    newX(2:2:end) = (x(1:end-1) + x(2:end)) / 2;
    x = newX;
end

disp(x)

但是,如果您查看结果,您会发现您正在做的事情与此相同:

clear x;
x(1) = 7;
x(2) = 11;

nIter = 3;

x2 = linspace(x(1), x(2), 2 ^ nIter + 1);

disp(x)