首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Matlab中的repmat函数不能一致地工作?

Matlab中的repmat函数不能一致地工作?
EN

Stack Overflow用户
提问于 2018-12-10 10:19:14
回答 1查看 182关注 0票数 0

Matlab的网格函数和流水线函数不匹配。如何修复?

代码语言:javascript
复制
%% direction field plot
[x,y]=meshgrid(-4:.5:4,-4:.5:4);       
dx = 2*x +1*y;
dy = 1*x +2*y;
dxu = dx./sqrt(dx.^2+dy.^2);
dyu = dy./sqrt(dx.^2+dy.^2);
quiver(x,y,dxu,dyu)
hold on  

%% Trajectory Plot
startx = repmat([-4:.5:4], 0,2); 
starty = ones(size(startx));
streamline(x,y,dxu, dyu, startx, starty)
dxu = dx./sqrt(dx.^2+dy.^2);
dyu = dy./sqrt(dx.^2+dy.^2);

print('c:\data\DirectionField','-dmeta')
saveas(gcf, 'c:\data\streamline.emf')
hold off

错误消息如下:

代码语言:javascript
复制
Error using repmat!
Replication factors must be a row vector of integers or integer scalars.

当我在代码中添加了7个轨迹图时,就发生了这种情况。当只使用两个轨迹时,错误没有发生吗?这是怎么回事?

MM

EN

回答 1

Stack Overflow用户

发布于 2018-12-10 13:20:19

您的startxstarty矩阵当前为空。repmat的最后两个参数应该是您希望分别在垂直和水平方向上重复矩阵的次数。由于您的复制因子是02,因此结果是一个空矩阵。使用正整数作为复制因子。

我不完全确定您想要做什么,但是如果您希望quiverstreamline图保持一致,我认为您根本不应该使用repmat。相反,我认为你应该这样做:

代码语言:javascript
复制
streamline(x, y, dxu, dyu, x, y); 

在OP的评论之后更新了

如果想要从一组特定的起点绘制轨迹,请使用下面的代码,其中startxy是一个包含m起点坐标的m x 2矩阵。

代码语言:javascript
复制
startxy = [0,2;
           1,-3;
           2,1]; %e.g. 3 starting points
streamline(x,y,dxu, dyu, startxy(:,1), startxy(:,2));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53698683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档