小编use*_*001的帖子

MATLAB:向轴添加绘图

plotyy用来在不同的y轴上绘制两个矢量.我希望在两个轴之一上添加第三个矢量.有人可以告诉我为什么以下代码不起作用?

[ax h1 h2] = plotyy(1:10,10*rand(1,10),1:10,rand(1,10));
hold on; plot(ax(2),1:10,rand(1,10));
??? Error using ==> plot
Parent destroyed during line creation
Run Code Online (Sandbox Code Playgroud)

我只想在其中一个轴(ax(1),ax(2))上添加一个额外的矢量plotyy.

matlab

3
推荐指数
1
解决办法
4942
查看次数

在对数刻度轴上只能近似正确

当使用MATLAB inpolygon函数确定多边形内的点时,我发现结果对于在线性轴上绘制的多边形是完全正确的,但对于在对数刻度轴上绘制的多边形只能大致正确.虽然我的怀疑倾向于支持MATLAB错误,但我可能忽略了一些东西.

以下代码再现了我遇到的其他数据的问题.结果显示在下图中(底部面板组是顶部面板的缩放视图).可以理解的是,在对数刻度轴(右)上绘制多边形的情况下,多边形内部存在未标记的点,多边形外部的标记点不应出现.相反,多边形测试对于在线性轴上绘制的多边形(左)是精确的.

n=2E4;
x(:,1)=rand(n,1); y(:,1)=rand(n,1);
x(:,2)=lognrnd(0.5,0.25,n,1); y(:,2)=lognrnd(0.5,0.25,n,1);
for m=1:2
    subplot(1,2,m);
    scatter(x(:,m),y(:,m),'.'); hold on;
    if(m==2)
        set(gca,'xscale','log'); set(gca,'yscale','log');
    end
    p=impoly(gca);
    pc=getPosition(p);
    in=inpolygon(x(:,m),y(:,m),pc(:,1),pc(:,2));
    scatter(x(in,m),y(in,m),20);
end
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

matlab point-in-polygon

3
推荐指数
1
解决办法
82
查看次数

编译的perl可执行文件无法在Windows 7(64位)上运行

我在64位Linux内核上创建了一个perl脚本的可执行文件(.exe).它在此环境中正确执行.

在64位Windows 7中运行可执行文件时,将显示以下错误消息:

此文件的版本与您正在运行的Windows版本不兼容.检查计算机的系统信息,以查看是否需要x86(32位)或x64(64位)版本的程序,然后与软件发行商联系.

鉴于源和目标操作系统都是64位,我不确定构建的架构是否是问题.是否有任何特殊注意事项使编译的perl程序在Windows中正确执行?谢谢.

perl executable exe runtime-error 32bit-64bit

2
推荐指数
1
解决办法
1535
查看次数

matlab:在 gscatter 中设置 MarkerFaceColor

对人类页gscatter表明,只有有限的一组标绘参数可以被操纵(颜色,符号/标记,标记边缘的颜色,标记大小,说明可见性)。如何设置附加参数,例如MarkerFaceColorin gscatter?是否必须在较低级别访问标记参数(例如,通过绘图句柄)?谢谢你。

matlab

2
推荐指数
1
解决办法
3415
查看次数

从perl中的输入文件一次有效地读取N行

我的输入数据文件的结构使得以N行块而不是一行读取数据更合乎逻辑.当然,我可以使用直截了当的东西

my @lines=();
while(!eof($FH)) {
  for(my $i=0;$i<$N;$i++)
   $lines[$i]=<FH>;
   chomp();
  }
  # proceed with analysis of N-size block ##
}
Run Code Online (Sandbox Code Playgroud)

但是,由于输入文件非常大(GB),我想知道是否存在比for循环更有效的解决方案.例如,我在网上发现了另一个使用该map功能的解决方案,虽然当我尝试在我的脚本中实现它时,会导致错误("my" variable @lines masks earlier declaration in same statement):

while(( my @lines = map $_ = <>, 1 .. 4 )[0]) {
  print @lines;
  print "\n";
}
Run Code Online (Sandbox Code Playgroud)

不可否认,我不理解[0]此代码的while块中的重要性,并建议使用另一种解决方案[-1].

鉴于操作的I/O密集程度,我想知道这个问题的计算效率最高的解决方案是什么(在Perl编程语言的范围内).

perl

1
推荐指数
1
解决办法
1131
查看次数

bash for循环能够进行零迭代

在迭代目录中的文件时,如下所示

for f in *.txt; do
    ...
done
Run Code Online (Sandbox Code Playgroud)

即使没有找到符合指定条件的文件,循环也会执行一次.避免这种错误进入循环的最佳方法是什么?可以将条件作为循环中的第一个语句放置,如果f未定义则触发循环中断,但也许有更好的解决方案.

bash for-loop

1
推荐指数
1
解决办法
47
查看次数

在perl中更改终端输出的字体大小

如何更改通过print命令创建的终端输出的字体大小perl?可以使用Term:ANSIColor模块提供的功能(可从CPAN获得)更改输出字体颜色和强调(例如粗体),但我无法找到支持更改字体大小的模块.我怀疑解决方案可能涉及system修改shell行为的调用(bash在我的情况下),但我不确定在这种情况下哪些调用是合适的.

linux bash terminal perl font-size

0
推荐指数
1
解决办法
1352
查看次数

列表上下文中的perl ord函数

ordperl中的函数返回字符的数值.可以在列表上下文中调用该函数吗?具体来说,我想将字符串分解为其数字字符值(例如,ABC- > 65, 66, 67).但是,以下命令未给出预期结果:ord(split(//,$STRING)).我可以使用循环结构,如下所示:

my @NUMERIC=();
for(my $i=0;$i<@STRING;$i++) {
  $NUMERIC[$i] = ord($STRING[$i]);
}
Run Code Online (Sandbox Code Playgroud)

但我想找到一个单线解决方案,如果可能的话,从函数产生列表输出.

perl

0
推荐指数
1
解决办法
98
查看次数