小编sho*_*zer的帖子

R和MATLAB上多维数组的算术平均值:性能的巨大差异

我在R和MATLAB上使用多维数组,这些数组有五个维度(总共14.5M的元素).我必须删除一个应用算术平均值的维度,我发现使用这两个软件的性能差异很大.

MATLAB:

>> a = rand([144  73  10   6  23]);
>> tic; b = mean(a,3); toc
Elapsed time is 0.014454 seconds.
Run Code Online (Sandbox Code Playgroud)

R:

> a = array(data = runif(144*73*6*23*10), dim = c(144,73,10,6,23))
> start <- Sys.time (); b = apply(a, c(1,2,4,5), mean); Sys.time () - start
Time difference of 1.229083 mins
Run Code Online (Sandbox Code Playgroud)

我知道应用函数很慢,因为它类似于通用函数,但我不知道如何处理这个问题,因为这种性能差异对我来说真的是一个很大的限制.我试图搜索colMeans/rowMeans函数的泛化,但我没有成功.

编辑 我将展示一个小样本矩阵:

> dim(a)
[1] 2 4 3
> dput(aa)
structure(c(7, 8, 5, 8, 10, 11, 9, 9, 6, 12, 9, 10, 12, 10, 14, 
12, 7, 9, 8, …
Run Code Online (Sandbox Code Playgroud)

performance matlab r

9
推荐指数
2
解决办法
1846
查看次数

MATLAB:颜色显示不正确?

我注意到MATLAB有时会错误地显示我的颜色.我不确定这是否是我的编程错误,或者它是否是MATLAB中的实际错误.在过去一年左右的时间里,我注意到这种行为具有一定的规律性.

这一次,我决定拍摄一张有关错误的图片的快照(在Windows 7,64位的MATLAB 2011b上拍摄):

                                   在此输入图像描述

显示相关图像的代码如下:

figure;
clf;
cla;
imshow(matrix, []);
colormap(cmap);
set(gca, 'Clim', [0 highest_index]);
Run Code Online (Sandbox Code Playgroud)

哪里:

  • matrix是类型的uint32(虽然我还试图explitly铸造matrixdouble之前调用imshow)
  • matrix范围内的值0900
  • cmap901条目
  • highest_index900

该值的RGB条目259matrix[1, 0, 0.1]上方和颜色表阵列中的图像二者中cmap的,即cmap(300, :) = [1, 0, 0.1](注意到矩阵值259获得索引300在颜色表中,由于颜色表的第一条目是用于矩阵值0).

问题:

为什么会这样?这是一个错误吗?有什么我做错了吗?

更新1:

  1. 我尝试切换CDataMappingdirectscaled,但它没有任何区别.
  2. 我也尝试使用imagesc而不是imshow,但它并没有什么区别.
  3. 如果我首先将图像转换为RGB(indexed …

matlab matlab-figure

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

为什么在打印大量(.png)数字时MATLAB会变慢?

我正在打印一大堆数字作为.png文件.每个图都是数据矩阵中一列的图,我将.png文件和它们串在一起形成一个动画.

我的问题是前几百张图像打印速度很快,但创建每个新图形的时间会迅速增加,从前几百个.png文件的~0.2秒增加到大约800个图像的2秒或更多.

在脚本运行期间内存使用量会增加,但每隔几秒左右只会增加1MB.这是在Windows上运行R2009b 64位.

我的代码看起来像:

n = 1000;
matrix = rand(n);

f = figure('Visible','off');    % create the figure

for i_ =1:n
    plot(1:n,matrix(:,i_));
    ylim([0 1]);
    set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
    png_name = [ 'img/timestep_' sprintf('%05d',i_) ];
    print('-dpng', png_name);
end
Run Code Online (Sandbox Code Playgroud)

matlab memory-leaks

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

未来会有哪些新的C++ AMP加速器?

我一直在学习C++ AMP,我所看到的一切都强调AMP在"加速器"上工作,而不仅仅是GPU.我认为今天所有加速器都是GPU,但未来可能会有不同类型的加速器.那还有什么可以成为加速器呢?现在正在开发新型加速器,还是AMP只是试图成为未来的证据?

c++-amp

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

Java,将两位小数舍入到两位小数

我试图将一个double舍入到最接近的两位小数,但它只是四舍五入到最接近的完整数.

例如,19634.0而不是19634.95.

这是我用于舍入的当前代码

double area = Math.round(Math.PI*Radius()*Radius()*100)/100;
Run Code Online (Sandbox Code Playgroud)

我看不出我错在哪里.

非常感谢任何帮助.

java

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

标签 统计

matlab ×3

c++-amp ×1

java ×1

matlab-figure ×1

memory-leaks ×1

performance ×1

r ×1