所以我在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)的部分崩溃.
我正在尝试使用MATLAB命令polar,它似乎从右侧0度开始,角度沿逆时针方向增加.
然而,我想做的是,它会改变这一点,以便极坐标系统从0度开始为"北",并且角度以顺时针方向增加.
有一个简单的方法吗?
编辑:我希望MATLAB 显示极坐标图,其中0从北方开始,角度以顺时针方式增加.
所以我在这里有这个矩阵,它的大小是13 x 8198.(我称它为'blah').
这是一个稀疏矩阵,其中大多数条目为0.当我执行imagesc(blah)时,我得到以下图像:

显然,这是毫无价值的,因为我无法清楚地看到非零元素.我试过玩颜色缩放,但无济于事.
无论如何,我想知道是否有更好的方法能够以某种方式在MATLAB中可视化这个矩阵?我正在设计一个算法,并希望能够在矩阵中看到某些东西.
谢谢!
我有一个似乎很简单的问题,但也许我错过了一些东西.让我们说我有:vector = [10:1:19];.我有另一个向量,want = [11 16 19];我只想要一个命令将为我返回的方式,即向量中出现11,16和19的指示.换句话说,我想要返回,2,7和10.什么命令可能会这样做?我不能使用find,(因为尺寸不匹配),还有另一种方法吗?
实际上长度vector和长度want都是长的,所以for循环不会这样做.
好的,所以这开始变得非常令人沮丧.
我有以下代码:(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轴的全部色域无济于事.
谢谢.
我必须遗漏一些非常简单的东西,因为这似乎不应该是这么难.
这段代码是正确的:
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.
谢谢.
我想了解是否存在一种"优雅"方式,可以根据用户输入选择运行特定(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在这种情况下,是否有更优雅的方式来"设置"在没有语句的情况下调用哪个函数?谢谢.
当我跑步时:
源激活/ 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)
谢谢。
所以,我想简单地采用我通过 制作的现有图plt.plot(x,y),将其转换为“图像”,以便我可以通过以下方式将其提供给 OpenCV 的视频编写者:
cv2.VideoWriter('myMovie.avi', fourcc, 20.0, (640,480))
writer.write(image)
Run Code Online (Sandbox Code Playgroud)
我的问题是,鉴于我已经绘制的图形,我如何获得“图像”?
谢谢。
所以这是交易:我有一个变量x,它是一个numpy.ndarray。此结构的大小为1000。如果我这样做x[0],则得到numpy.void4个数字的。如果我这样做x[1],那么我会得到另一个numpy.void,也有4个数字,依此类推。
我只想做的是:我想对这个数据结构进行切片,以便提取大小为1000x3的numpy矩阵。
我怎么做?谢谢