gpt4 book ai didi

matlab - 用 meshgrid 替换 linspace

转载 作者:行者123 更新时间:2023-12-02 07:03:06 24 4
gpt4 key购买 nike

我在 for 循环中使用 meshgrid 犯了一个错误。让我以下面的代码为例:

x=linspace(0,100,100);
y=linspace(0,100,100);
x0=[0 1 2 3];
y0=[4 5 6 7];
for i=1:4
for j=1:length(x)
for k=1:length(y)
r(i,j,k)=sqrt((x(j)-x0(i)).^2+(y(k)-y0(i)).^2);
end
end
end

我想我在这里不必要地使用循环并尝试用 meshgrid 替换它

[x,y]=meshgrid(0:1:100);
for i=1:4
r(i,:,:)=sqrt((x(:)-x0(i)).^2+(y(:)-y0(i)).^2);
end

你能帮我重写这段代码吗?

最佳答案

x=linspace(0,100,100);

第一条评论:这不会产生[0 1 2 ... 100] - 为此你会使用 linspace(0,100,101)因为 0:100 中有 101 个元素

您实际上非常接近正确。只是不要转xx进入xx(:) (那么最后形状会错):

[xx yy] = meshgrid(0:100, 0:100); % I like to use xx and yy to remind myself they are 2d...

x0=[0 1 2 3];
y0=[4 5 6 7];
for ii=1:4 % I use ii since i is also used as a built in variable with value sqrt(-1)
r(ii,:,:) = sqrt((xx - x0(ii)).^2 + (yy - y0(ii)).^2);
end

离开最里面的for循环可能就OK了。我想不出一种摆脱它的方法,它不会降低您的代码的可读性。

关于matlab - 用 meshgrid 替换 linspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com