小编bla*_*bla的帖子

将许多行绘制为热图

我有一大堆(~1000)来自我正在尝试处理的数据记录器的文件.

如果我想从这些日志文件中的一个中绘制趋势,我可以使用它

plot(timevalues,datavalues)
Run Code Online (Sandbox Code Playgroud)

我希望能够以与示波器具有"持久"模式的方式类似的方式同时查看所有这些线.

示波器Diplay

我可以拼凑一些使用直方图的东西,但我希望有一个预先存在的或更优雅的解决方案来解决这个问题.

matlab plot logfile-analysis data-processing

8
推荐指数
2
解决办法
1394
查看次数

在编写代码时,如何让Matlab的编辑器智能缩进?

在使用Matlab时,我经常使用Ctrl + A(全选)和Ctrl + I(智能缩进)的组合.我可以自动编写Matlab的编辑器智能缩进选项,同时输入代码吗?

matlab editor auto-indent

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

在Matlab中找到没有NaN的行的最快方法

我想以最快的方式找到没有任何NaN的行的索引,因为我需要做数千次.到目前为止,我尝试了以下两种方法:

find(~isnan(sum(data, 2)));
find(all(~isnan(data), 2));
Run Code Online (Sandbox Code Playgroud)

有没有一种聪明的方法可以加快速度,或者这是最好的方法吗?数据矩阵的维度通常为数百或数百.

performance matlab matrix vectorization

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

使用Matlab有效地为我的猫模拟激光指示器

我正在尝试使用matlab编写代码,该代码模仿激光指针,我的猫会喜欢在屏幕上追逐它.这是我到目前为止所做的:

figure('menubar','none','color','k')
h = plot(0,'r.','MarkerSize',20);
xlim([-1 1]);  ylim([-1 1])
axis off
phi1=(1+sqrt(5))/2;
phi2=sqrt(3);
step= 0.0001; % change according to machine speed
for t=0:step:100
    set(h,'xdata',sin(t+phi1*t),'ydata',cos(phi2*t))
    drawnow
end
Run Code Online (Sandbox Code Playgroud)

此代码的"问题"如下:

  1. 指针或多或少地以恒定速度移动,并且不会减慢到接近停止然后意外地继续.

  2. 虽然我试图用不合理的数字来制作它,但是整个动作从右到左是连续的.我认为更清晰的轨迹改变会有所帮助.

我知道这不是传统的编程问题,但我仍然想解决一个编程问题.我很感激你的帮助,当然还有新的方式回答我的问题,不使用我添加的代码.

matlab motion game-physics

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

在matlab中绘制不同颜色的同一图中的多个直方图

我有一个600x24的矩阵a,我想在相同的图中制作每列的直方图,但在MATLAB中使用不同的颜色,我使用下面的代码,但它没有给我彩虹色,我使用下面的代码,请帮助

col = hsv(24);

hold on;

for m = 1:24
hist(a(:,m), 50);
h = findobj(gca,'Type','patch');
set(h,'FaceColor', col(m,:),'EdgeColor',col(m,:));
alpha(0.3);
end

hold off;
Run Code Online (Sandbox Code Playgroud)

matlab plot histogram

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

从图像边缘去除2d基线

我有一个图像,比如说

z=double(rgb2gray(imread('onion.png')));
z=z./max(z(:));
imagesc(z)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,从各个方面约10个像素我得到了一个我想要删除的不同基线.基线可能是因为边缘像素的增益伪影.

人为地,我可以创建如下效果:

m=zeros(size(z));
m(1,:)=5; m(end,:)=5;
m(:,1)=5; m(:,end)=5;
m=conv2(m,fspecial('gaussian',15,3),'same');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这样我实际得到的图像是这样的:

imagesc(z+m); % I assume the effect is additive but I dont know that
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想删除该基线框并将原始信息保留在该图像的边缘.有任何想法吗?

一些图像具有非常平滑的特征,所以我试图摆脱"框架",通过裁剪两侧和推断,但它没有做得很好.

matlab image image-processing baseline

6
推荐指数
0
解决办法
201
查看次数

使用scipy.weave.inline进行快速2D中值滤波

我在2D中值滤波器(3x3窗口)中存在瓶颈,我在一组非常大的图像上使用,我想尝试优化它.我测试过scipy.ndimagemedian_filter,以及PIL,scipy.signalscikits-image.然而,浏览SO我已经知道C中有一个快速的O(n)中值滤波器(恒定时间中的中值滤波,参见C中的滚动中值算法),我想知道我是否可以使用scipy在Python中实现它. weave.inline?有关替代路线的任何建议吗?

python filtering image-processing scipy median

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

如何在不改变Matlab中colorbar值的情况下反转图片的颜色

我正在绘制一个混淆矩阵,其中包含以下颜色栏:

在此输入图像描述

我现在想做的是保持一切完全相同,但反过来颜色.我尝试了以下代码(我从SOF的另一篇文章中读到):

myimage = sum(255 - myimage, 3);
Run Code Online (Sandbox Code Playgroud)

这给了我:

在此输入图像描述

这正是我想要的,除了颜色条中的值已经改变了......如何在不改变颜色条中的值的情况下做同样的事情?

谢谢你的任何帮助=)

graphics matlab image color-mapping matlab-figure

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

如何删除矩阵A的那些行,它们与Matlab中指定列中的矩阵B具有相等的值?

我在Matlab A和B中有两个矩阵,它们具有相同的列数但行数不同.B中的行数也小于A中的行数.B实际上是A的子集.

如何从A中有效地删除这些行,其中A的第1列和第2列中的值等于矩阵B的第1列和第2列中的值?

目前我正在这样做:

for k = 1:size(B, 1)
     A(find((A(:,1) == B(k,1) & A(:,2) == B(k,2))), :) = [];
end
Run Code Online (Sandbox Code Playgroud)

和Matlab抱怨这是低效的,我应该尝试使用any,但我不知道如何使用它any.有人可以帮我解决这个问题吗?=)

我试过这个,但它不起作用:

A(any(A(:,1) == B(:,1) & A(:,2) == B(:,2), 2), :) = [];
Run Code Online (Sandbox Code Playgroud)

它抱怨如下:

Error using  == 
Matrix dimensions must agree.
Run Code Online (Sandbox Code Playgroud)

我想要的例子:

在此输入图像描述

在此输入图像描述

结果中的AB表示从A中删除B行.与AC相同.

performance matlab matrix vectorization

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

在噪声信号中找到模型函数的稳健拟合

我有一个嘈杂的信号和一个模型函数,例如:

x=linspace(0,20);
w=[2 6 -4 5];
y=w(1)*besselj(0,x)+w(2)*besselj(1,x)+w(3)*besselj(2,x)+w(4)*besselj(3,x);
y(randi(length(y),[1 10]))=10*rand(1,10)-5;
plot(x,y,'x')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想使用 RANSACw在我的模型中找到,因为这种方法在查找线时对噪声具有鲁棒性。然而,这不是一个线性问题,我无法得到合适的拟合,可能是因为我试图拟合的函数的振荡性质。

我看到 matlab 有一个 fitPolynomialRansac 函数,但即使对于一个a+b*x+c*x^2+d*x^3简单的情况(-1 和 1 之间),这也失败了。

任何想法如何驯服RANSAC?或不同的鲁棒噪声方法?

matlab curve-fitting noise data-fitting ransac

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