小编Spa*_*cey的帖子

试图让MATLAB的数字停止'闪烁'

所以我在MATLAB中有一个简单的循环,它执行以下操作:

for p = 1:100

  x = 4.*randn(1,100);
  y = 7.*randn(1,100);

  figure(1) 
  plot(randn(1,100));

  figure(2);
  plot(randn(1,100));

end
Run Code Online (Sandbox Code Playgroud)

x和y组成,但这是它的主旨.无论如何,当我运行这段代码时,毫不奇怪,MATLAB将制作两个数字并进行相应的绘图.问题是,当我这样做时,我在数字之间得到了一种"眨眼",这使得看到x和y的质量随着时间的推移而变差.

我发现了一种方法可以使其中一个图像更平滑:

figure(1);
for p = 1:100

  x = 4.*randn(1,100);
  y = 7.*randn(1,100);

  plot(randn(1,100));
  drawnow

 end
Run Code Online (Sandbox Code Playgroud)

如果我这样做,那么当然图(1)将很好地绘制非常顺利地显示x,没有图(1)'在图之间'闪烁',但现在我不能显示图(2)或y!

如何在没有"闪烁"的情况下平滑地绘制不同数字(不是子图)上的数量?

编辑:

感谢Geodesic的回答,解决方案有效,但是有一个我认为不会成为问题的微妙之处.

1)我无法在此解决方案中使用"imagesc".

例如,

figure(1);
aone = axes;
figure(2);
atwo = axes;

for p = 1:100

  x = 4.*randn(1,100);
  y = 7.*rand(10,100);


  plot(aone,x);
  drawnow;
  imagesc(atwo,y);
  drawnow;
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,带有imagesc(atwo,y)的部分崩溃.

graphics matlab user-interface matlab-figure

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

旋转MATLAB的极坐标图?

我正在尝试使用MATLAB命令polar,它似乎从右侧0度开始,角度沿逆时针方向增加.

然而,我想做的是,它会改变这一点,以便极坐标系统从0度开始为"北",并且角度以顺时针方向增加.

有一个简单的方法吗?

编辑:我希望MATLAB 显示极坐标图,其中0从北方开始,角度以顺时针方式增加.

matlab plot polar-coordinates

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

如何在MATLAB中可视化稀疏矩阵?

所以我在这里有这个矩阵,它的大小是13 x 8198.(我称它为'blah').

这是一个稀疏矩阵,其中大多数条目为0.当我执行imagesc(blah)时,我得到以下图像:

在此输入图像描述

显然,这是毫无价值的,因为我无法清楚地看到非零元素.我试过玩颜色缩放,但无济于事.

无论如何,我想知道是否有更好的方法能够以某种方式在MATLAB中可视化这个矩阵?我正在设计一个算法,并希望能够在矩阵中看到某些东西.

谢谢!

matlab plot matrix visualize sparse-matrix

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

在MATLAB中的向量中查找特定事件,没有for循环?

我有一个似乎很简单的问题,但也许我错过了一些东西.让我们说我有:vector = [10:1:19];.我有另一个向量,want = [11 16 19];我只想要一个命令将为我返回的方式,即向量中出现11,16和19的指示.换句话说,我想要返回,2,7和10.什么命令可能会这样做?我不能使用find,(因为尺寸不匹配),还有另一种方法吗?

实际上长度vector和长度want都是长的,所以for循环不会这样做.

matlab for-loop vector vectorization

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

MATLAB imagesc命令不适用于非均匀间隔的y轴值

好的,所以这开始变得非常令人沮丧.

我有以下代码:(scanningResponse,thetaAxis在这里给出).

clear all
load scannedResponse
load thetaAxis
figure(1); clf(1);
pcolor(1:size(scannedResponse,2), thetaAxis, scannedResponse); shading interp; 
figure(2); clf(2);
imagesc(1:s.N.Lsnaps, (thetaAxis),  scannedResponse);
Run Code Online (Sandbox Code Playgroud)

所以我得到了两张照片.一个用pcolor制作,一个用imagesc制作.pcolor图像是正确的,因为y轴是正确的,并且线条是它们应该在的位置.imagesc是错误的,因为y轴是错误的,并且线不是它们应该的位置.

在此输入图像描述

在此输入图像描述

如您所见,imagesc图像的线条与pcolor图像的线条不一致.我似乎无法使图像y轴与pcolor y轴一致,因此给出了类似的图.我该怎么做呢?

PS我已经尝试了使用set(gca,'Ydir', 'normal')命令等等来翻转图像的y轴的全部色域无济于事.

谢谢.

matlab plot image

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

为什么我不能在MATLAB匿名函数中定义变量?

我必须遗漏一些非常简单的东西,因为这似乎不应该是这么难.

这段代码是正确的:

clear all
whatever = @(x) deal(max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input) 
Run Code Online (Sandbox Code Playgroud)

但是,我真正想做的是这样的事情:

clear all
whatever = @(x) deal(q = 3; q*max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input)    
Run Code Online (Sandbox Code Playgroud)

这为什么会破裂?我不能在函数内定义q?我想使用匿名函数的全部原因是我实际上可以在其中执行多行代码,然后返回一个答案.我想匿名函数的最后一个语句是返回的,但是如何在其中定义变量?我不想在匿名函数的定义之前定义q.

谢谢.

matlab function anonymous-function

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

在C++中,如何选择在不使用if语句的情况下运行特定的成员函数?

我想了解是否存在一种"优雅"方式,可以根据用户输入选择运行特定(c ++)类成员函数.

例如,让我们说我们有一个类,这样:

class myClass
{
    int foo;
    myClass(int input) { foo = input;}
    void runMyFunction() 
    { 
        if ( foo == 1) 
        {
            function1();
        }
        else if (foo == 2)
        {
            function2();
        } 
    }


    void function1();
    void function2();
};
Run Code Online (Sandbox Code Playgroud)

我想做的是,如果用户input=1在构造函数中指定,则function1()在调用runMyFunction()成员时调用,但如果用户input=2在构造函数中指定,function2()则应调用.

我的问题是,有没有更优雅的方式去做这个没有if声明?推动力是我宁愿让代码一遍又一遍地通过这个检查,因为我将在循环中使用这个调用.if在这种情况下,是否有更优雅的方式来"设置"在没有语句的情况下调用哪个函数?谢谢.

c++ constructor if-statement class member

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

Conda环境名称在提示中显示整个目录

当我跑步时:

源激活/ anaconda2 / envs / myEnv

它在我的提示下(在iterm2上)显示了此conda环境的整个目录,如下所示:

(/Users/billy/anaconda2/envs/myEnv)billy@mbp:~/projects
Run Code Online (Sandbox Code Playgroud)

这是一种缩短此方法的方法,以便仅显示conda环境的名称,而不显示整个目录吗?例如:

(myEnv)billy@mbp:~/projects
Run Code Online (Sandbox Code Playgroud)

谢谢。

command-prompt iterm iterm2 anaconda conda

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

将 python 中显示的图像转换为 OpenCV 图像。

所以,我想简单地采用我通过 制作的现有图plt.plot(x,y),将其转换为“图像”,以便我可以通过以下方式将其提供给 OpenCV 的视频编写者:

cv2.VideoWriter('myMovie.avi', fourcc, 20.0, (640,480))
writer.write(image)
Run Code Online (Sandbox Code Playgroud)

我的问题是,鉴于我已经绘制的图形,我如何获得“图像”?

谢谢。

python plot opencv image avi

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

如何切片由numpy.void数字组成的numpy.ndarray?

所以这是交易:我有一个变量x,它是一个numpy.ndarray。此结构的大小为1000。如果我这样做x[0],则得到numpy.void4个数字的。如果我这样做x[1],那么我会得到另一个numpy.void,也有4个数字,依此类推。

我只想做的是:我想对这个数据结构进行切片,以便提取大小为1000x3的numpy矩阵。

我怎么做?谢谢

python numpy matrix numpy-broadcasting

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