小编Cri*_*ngo的帖子

在应用程序中包含 Visual C++ 运行时

对于我的应用程序(Euler Math Toolbox),我从 Visual C++ 2010 Express 切换到 Visual C++ 2012 Professional。为了与 XP 兼容,我使用 Visual C++ 2012 更新 1 中的 110-XP 平台工具集。

在早期版本中,我在程序目录中添加了三个 DLL 文件 MSV90*.dll 以及它们的清单。我可以为 Visual C++ 110 做同样的事情吗?我需要包含哪些文件?我需要清单吗?如果是这样,我在哪里可以找到一个?

windows visual-studio-2010 euler-math-toolbox

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

MATLAB eig有时会返回反转的符号

我正在尝试编写一个获取A任意大小矩阵的程序,并且SVD将其分解:

A = U * S * V'
Run Code Online (Sandbox Code Playgroud)

A用户输入的矩阵在哪里,U正交矩阵由特征值的特征向量组成A * A',S是奇异值的对角矩阵,并且V是特征向量的正交矩阵A' * A.

问题是:MATLAB函数eig有时会返回错误的特征向量.

这是我的代码:

function [U,S,V]=badsvd(A)
W=A*A';
[U,S]=eig(W);
max=0;
for i=1:size(W,1) %%sort
    for j=i:size(W,1)
        if(S(j,j)>max)
            max=S(j,j);
            temp_index=j;
        end
    end
    max=0;
    temp=S(temp_index,temp_index);
    S(temp_index,temp_index)=S(i,i);
    S(i,i)=temp;
    temp=U(:,temp_index);
    U(:,temp_index)=U(:,i);
    U(:,i)=temp;
end
W=A'*A;
[V,s]=eig(W);
max=0;
for i=1:size(W,1) %%sort
    for j=i:size(W,1)
        if(s(j,j)>max)
            max=s(j,j);
            temp_index=j;
        end
    end
    max=0;
    temp=s(temp_index,temp_index);
    s(temp_index,temp_index)=s(i,i);
    s(i,i)=temp;
    temp=V(:,temp_index);
    V(:,temp_index)=V(:,i);
    V(:,i)=temp;
end
s=sqrt(s);
end
Run Code Online (Sandbox Code Playgroud)

我的代码返回正确的s矩阵,也"几乎"正确U …

matlab matrix linear-algebra svd eigenvector

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

Scipy ndimage 形态学运算符使我的计算机内存 RAM (8GB) 饱和

我需要使用半径为 17 或更大的 3D 结构元素来计算 3D 形状数组 (400,401,401)、大小为 64320400 字节的形态学开度。结构元素 ndarray 的大小为 42875 字节。使用scipy.ndimage.morphology.binary_opening,整个过程消耗 8GB RAM。

I have read scipy/ndimage/morphology.py on GitHub, and as far as I can tell, the morphology erosion operator is implemented in pure C. It is to difficult for me to understand the ni_morphology.c source, so I haven't found any part of this code which leads to such enormous memory utilization. Adding more RAM is not a workable solution, since memory usage may increase …

python numpy image-processing scipy mathematical-morphology

5
推荐指数
2
解决办法
1193
查看次数

在 Octave 中创建具有多个绘图的动画

我正在使用 Octave 编写一个脚本来绘制不同时间段的函数。我希望制作一个情节动画,以便看到随时间的变化。

有没有办法保存每个时间点的每个图,以便可以组合所有图来创建此动画?

plot animation octave

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

在O中排序数组(n log(log n))

我试图解决以下任务:我给了一个n元素的数组.众所周知,并非所有数组的键都是不同的,但我们有k个不同的元素(当然k <= n).赋值是在O(n log(log n))最坏情况下对数组进行稳定排序,而k = O(log n).我被允许使用O(n)额外的内存.

我目前的解决方案如下所述:


使用大小为k的链接创建一个哈希表,该哈希表执行以下操作:如果哈希函数尝试将元素插入到已经有值的位置 - 它会检查它们是否相等 - 如果它们是,则将其添加到列表中,如果没有,它会开始在数组中移动,直到它找到一个具有相同值或空位(首先出现)的地方.

这样,每个地方的列表只包含具有相同键的元素.哈希表的插入是从原始数组的开始到结束,因此每个列表都是稳定排序的.然后使用mergeSort对哈希表中的数组进行排序(对于列表,我们将第一个元素视为一个并移动它).

完成合并排序后,我们按顺序将元素复制回原始数组,每当我们遇到一个列表时,我们按顺序复制每个元素.

这是我不确定的:

是否可以这么说,因为哈希表的大小为k,而且我们只有k个不同的元素,统一哈希承诺哈希函数尝试给出不同值的时间在数组中相同的位置可以忽略不计,因此它是构建的时间复杂度是O(n)?

因为如果是这样,算法的运行时似乎是O(n + k log k)= O(n + log n*log(log n)).这肯定比O(n log k)更好,这是所需要的.

sorting algorithm big-o

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

将元胞数组的内容作为单独的输入参数传递给 MATLAB 中的函数

我在 MATLAB 中有一个元胞数组,例如A{1}, A{2}, A{3},...., A{561}。我想将它传递给函数参数,例如:

horzcat(A{1}, A{2}, ..., A{561})
Run Code Online (Sandbox Code Playgroud)

显然,这是一种昏昏欲睡的方式来写入所有单元格。做到这一点的捷径是什么?

我已经尝试过了,horzcat(A{1}:A{561})但它不起作用。

arrays matlab arguments function cell-array

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

傅里叶滤波,回到图像

我的数据上有重复的条纹图案,我试图通过傅立叶变换它并删除图案来将其取出。但是我似乎无法找到返回图像空间的正确方法。

red_cube_array = (cube_array - np.median(cube_array)) * taper

im_fft  = (fftpack.fft2(red_cube_array))
im_po   = fftpack.fftshift((np.conjugate(im_fft) * im_fft).real)

mask = np.empty_like(im_po[0])*0 + 1
mask[417:430, 410:421] = 0
mask[430:443, 438:450] = 0

im_po_mask = im_po * mask

im_ifft = fftpack.ifft2(fftpack.ifftshift(im_po_mask))
Run Code Online (Sandbox Code Playgroud)

taper只是一个在执行 FFT 时平滑边缘以消除边缘效应的数组。然后我对数组进行 FFT 并非常粗略地过滤掉垃圾。然而,回去似乎不起作用。我是不是在某个地方绊倒了?

python filtering fft

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

查找图像是亮还是暗

我想知道如何使用 OpenCV 在 Python 3 中编写一个函数,它接收图像和阈值,并在严重模糊并降低质量(越快越好)后返回“暗”或“亮”。这听起来可能含糊不清,但任何有效的方法都行。

python opencv image-processing opencv-python

5
推荐指数
3
解决办法
9597
查看次数

如果 y 方向设置为“反向”,如何修复 Matlab 中矢量注释头的错误对齐

代码

figure
scatter([1,2,3],[1,2,3]);
ax = gca;
ax.YDir = 'reverse'
ah = annotation('arrow','position',[ 2.5 2.5 -1 -1]);
set(ah,'parent',ax);
Run Code Online (Sandbox Code Playgroud)

给出错误的矢量头对齐:

带反向箭头的绘图

有什么想法如何解决这个问题吗?

matlab plot matlab-figure

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

沿对角线子集对称矩阵

我有一个8x8的矩阵,例如A=rand(8,8)。我需要做的是沿对角线对所有2x2矩阵进行子集化。这意味着,我需要保存矩阵A(1:2,1:2)A(3:4,3:4)A(5:6,5:6)A(7:8,7:8)。为了更好地说明自己,我使用的当前版本如下:

 AA = rand(8,8);
 BB = zeros(8,2);
 for i = 1:4
     BB(2*i-1:2*i,:) = AA(2*i-1:2*i,2*i-1:2*i);
 end
Run Code Online (Sandbox Code Playgroud)

这适用于小型AA矩阵和小型AA子矩阵,但是随着大小的显着增长(甚至可能达到50,000x50,000),使用上述for循环无法实现。有没有办法实现上述目的而没有循环?我考虑过其他可能利用上下三角形矩阵的方法,但是即使在某些时候,这些方法似乎也需要循环。任何帮助表示赞赏!

arrays matlab matrix

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