为什么matlab中相同大小的矩阵运行速度差异巨大

I extracted features from last two conv layers from model VGG-19, separately named X and Y. X and Y share the same size 19*19*512. Then I apply dimension reduction to X and Y with PCA. And I get the size 361*20. 20 is the dimension.

Then I compute X's inner product, Y's inner product and the cross-product of X and Y, separately written XX,XY,YY. By now , XX ,YY or XY all share the size of 400*1. When I put XX or XY into linSVM as input, it shows badly efficiency and the accuracy of trainset is quite low(about 50%). However, YY as the input shows 100% accuracy of trainset and shows surprising speed. So it really confuses me. Is it possible?

1个回答

PCA里面涉及奇异值分解SVD,这种运算跟矩阵自身的性质有关系的(比如矩阵病态时可能性能会急剧下降),同样大小的矩阵,如果矩阵自身性质不好,也可能会耗用更多的计算时间。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
matlab 矩阵数值比较总结

一、unique函数 格式  b = unique (a)         %取集合a的不重复元素构成的向量 b = unique (A,'rows')   %返回A、B不同行元素组成的矩阵 [b,i,j] = unique (…)     %i体现b中元素在原向量(矩阵a)中的位置;j体现原向量(矩阵a)在b中的位置 例1-39 >> A=[1 1 2 2 4 4 6  4  6]

matlab-基础 rand 与已知矩阵同大小的随机数矩阵

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。                      &am

matlab 判断两个矩阵是否相等

数学意义的相等 all(A(:) == B(:)) isequal(A, B)但须注意的是:B = A,未必能保证 isequal(A, B)返回真,因为如果 A 中包含NaN,因为按照定义,NaN ~= NaN >> A = [1, NaN] >> B = A >> isequal(A, B) 0>> NaN == NaN 0浮点数相等对于浮点数矩阵,判断两个矩阵是否精确相等意义不大,真正有意义的

matlab提高运行速度

(1)为矩阵变量预制内存而不是动态分配 慢: for k = 2:1000      x(k) = x(k-1) + 5;  end  快: x = zeros(1, 1000);  for k = 2:1000      x(k) = x(k-1) + 5;  end  在程序一开始就为所有大的矩阵变量预制存储单元。   (2)将循环语句改为向量形式 慢: For i

关于矩阵比较大小的故事

写在前面 以为这个博客会永远的荒芜下去…没想到这时候可以用来自己做一些关于代码作业的小的记录用。做好了几年以后回头不可思议的看着负基础的自己认真的记录这些可能很简单的事情的准备,开始吧。 题目部分//主函数部分 int main() { size_t total = 0, size = 0; scanf("%zu%zu", &total, &size); int matrixArr

Matlab 字符串比较

http://www.cnblogs.com/anzhiwu815/p/5885097.html  Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果。下面就介绍一下字符串数组查找的小技巧。  字符串数组我通常会选择应用cell格式保存,下面的分析也是建立在这个前提下。    【1】 strcmp() 函数  strcmp()...

MATLAB运行速度与数组维数的关系

最近看了一些加快matlab运行速度的帖子,但是没有一个特别系统的文章,这里先把自己的实验部分做个简单记录,后面有实验再进行添加 matlab版本:R2014a (8.30 532) 电脑配置: CPU: i5 - 6200U 2.30GHz(4 CPUs)~2.4GHz         内存: 8G 显卡: NVIDIA GeForce 930M 我们知道ma

提高matlab运行速度

转自http://blog.csdn.net/szv123_rier/article/details/8089589 http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=38382 首先说说Matlab与其他语言的差异:例如对于C或者C++来说,只要算法的思想不变、采用的数据结构相同,不同人写出来的语句在效率上一般不会产生太大的差别

MATLAB中查找两个不同维度的矩阵中相同或者不同元素的位置

MATLAB中查找两个不同维度的矩阵中相同或者不同元素的位置

matlab中判断两矩阵是否相等

(1)函数isequal:Test arrays for equality. isequal(a,b); 如果a和b相等,则 ans=1,否则 ans=0. isequal 通过以下方式实现 a = rand(3) ; b = rand(3) ; all(a(:)==b(:)) , all(a(:)==a(:)) ans =       0

Matlab 调整矩阵大小

在Matlab使用当中,常常需要定义一个零矩阵用来存储数据,但是在后续的调用当中,最后面的矩阵可能没有存储数据,所以在调用矩阵时可以通过改变矩阵大小删除相应的零矩阵。 例子如下: A=rand(10,10);%定义一个10*10的随机矩阵 A(:,4)=zeros(1,10);%将A矩阵的第四列置零 A(:,6)=zeros(1,10);%将A矩阵的第六列置零 A1=sum(abs(A)

3.2矩阵大小及结构的改变

根据运算时不同情况和需要,矩阵大小和结构的改变主要的方式有旋转矩阵、改变矩阵的维度、删除矩阵元素等等,MATLAB中提供了矩阵旋转与矩阵维度改变的函数 矩阵旋转与改变维度的函数 函数名称                 函数功能 fliplr(A)      矩形每一行均进行逆序排序 flipud(A)   矩阵每一列均进行逆序排列 flipdim(A,dim)    生成一

MATLAB生成(对角线上元素相同的)三对角矩阵的实例

一、生成对角矩阵的基本用法 1、diag(a) 使用diag(a)命令生成对角矩阵,a为某个向量,如下所示: 2、diag(a,i) 使用diag(a,i)命令生成,a为某个向量,i为a向量相对主对角线偏移的列数(向上为正,向下为负)。当i=0时,可以直接写成diag(a)。具体情况如下: 二、生成三对角线上元素相同的矩阵 1、生成全为1的向量如下: (1)a(1:3,1...

MATLAB求矩阵的规模——size & length

1.size 对于M*N矩阵A,size(A)返回两个值,分别为M和N。 例:对于矩阵A =[1,2;3,4;2,6],size(A)返回3和2,分别是A的行数和列数。 2.length 对于M*N矩阵A,length(A)返回M和N中较大者。故而当A是向量时,length(A)就是A的维数。

【转】提高MATLAB运行效率

用过Matlab的人都知道,Matlab是一种解释性语言,存在计算速度慢的问题,为了提高程序的运行效率,matlab提供了多种实用工具及编码技巧。   1. 循环矢量化 Matlab是为矢量和矩阵操作而设计的,因此,可以通过矢量化方法加速M文件的运行。矢量化是指将for循环和while循环转换为等价的矢量或矩阵操作。下面给出一个循环的例子: i=0; for n = 0:0.1:

Matlab代码的耗时分析、优化、加速

Profile(分析) 在加速你的matlab程序之前,你需要知道你的代码哪一部分运行最慢。matlab提供个简单的机制,让你能够知道你 的代码的某一部分运行所占用CPU时间。通过在代码段开始添加tic,及在结束添加toc;matlab就能计算出这一代 码段的运行时间。 Tic和toc方法存在两个问题: (1)显示的时间是运行时间“wall clock”。这个时间受你

matlab中去除矩阵中相同的行

背景 最近一直在研究电路故障分析,在电路波形中提取到了一些数据,由于样本数据很多,因此也就有很多重复的,我们需要将这些数据应用到支持向量机进行分类模型的建立,为避免相同的数据在模型的建立中没有起到任何的作用,因此,需要将这些相同的数据进行删除,只保留一个。 转变为数学问题就是:matlab中如何搜索一个矩阵中 值相同的行数并去除。例子如下: A=[1 0 0 0; 1 1

Matlab中统计矩阵中相同元素的个数的方法

方法一: A = data(:,i); B = unique(A); c = zeros(size(B)); for i=1:length(B)     c(i)=length(find(A==B(i))); end   方法二: 使用函数tabulate(A)     方法三: 使用函数hist(A,unique(A)) FROM:ht

Matlab中统计矩阵中相同元素的个数

寻找矩阵或者向量中不同元素的个数可使用以下方法: 方法一: A = data(:,i); B = unique(A); c = zeros(size(B)); for i=1:length(B)     c(i)=length(find(A==B(i))); end   方法二: 使用函数tabulate(A)     方法三

Matlab如何找出两个矩阵中相同的元素

a=[1,2,3,4,5,6,7,8,9]; b=[1,4,6,9,12,14]; c=intersect(a,b) % c就是a、b中相同的元素   matlab里关于集合运算和二进制数的运算的函数 intersect:集合交集 ismember :是否集合中元素 setdiff :集合差集 setxor :集合异或(不在交集中的元素) union :两个集合的并

matlab中size和length求解矩阵大小的区别

pp=zeros(47,5);  size(pp)  length(pp) 从输出结果看,size输出47,5,而length输出47 pp=zeros(4,5);  size(pp)  length(pp) 从输出结果看,size输出4,5,而length输出5 结论:size输出行列值,而length输出行列里面较大值

用matlab生成同一元素的矩阵

如何用matlab生成元素都一样的矩阵? 例如,只有1列,但是有5000行,每一行都是9.28。 1) A=ones(5000,1)*9.28; 2) A = repmat(9.28,[5000 1]); 3) a(1:5000)=9.28; b=a';

matlab-线性代数 判断 两矩阵是否相同

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。                      &am

matlab矩阵中如何去掉重复的行?

近来用matlab编程遇到了这样两个问题,如有以下矩阵: IDX = [1,2,3;        2,3,1;        1,2,3;        2,3,1;        1,1,1;        1,1,1]; 问题1)怎样去掉其中的重复行呢? 在网上找了半天,大家都提供的是自己写的循环。我在想,这样简单的问题matlab肯定提供了基础函数调用。 最后发现是这

MATLAB取出某一列相同值的行

A = train20171215; F = find(A(:,3)==5); %F = find(A(:,3)==1); pinpai5 = []; for i = 1:964 m = F(i,:); n = A(m,:); pinpai5=[pinpai5;n]; end save('pinpai5.mat','pinpai5'); 最近参加一个比赛需要取出某

Matlab中判断两个矩阵是否相等

>> ddd = [1 2 3 4 5 6]; >> bbb = [1 45 56 55 89 40]; >> ddd == bbbans = 1 0 0 0 0 0>> if sum(ddd==bbb)~=0 display('not equal') else display('equal') end not equal还有一种方法就是用isequ

matlab中去掉矩阵重复行并且不改变原顺序

1、使用unique去掉矩阵中的重复行。 >> f=unique(e) >> f = 0 0 0 1 1 1 2 2 2 3 3 32、在上一步中f即是去掉e中重复行后的结果,但是matlab的unique函数对它进行了重新排序,如果我们想要去掉重复的行同时又不改变其原本的顺序的话,可以进行如下操

Matlab 按列排序 去掉重复元素

1. Matlab中,矩阵按照某一列排序      参考:http://kb.iu.edu/data/afrd.html      函数:sortrows(A,j)    例:A = [1 2 3             3 0 9             6 5 4]        B = sortrows(A,2)        则:        B =

matlab查找两个向量中不同的元素

setdiff intersect ismember setdiff 设有向量A和B,要求出A和B中的不同元素,可使用matlab自带的setdiff函数。语法为: c = setdiff(A, B) 其计算公式为c = A - B。 需要注意的是此函数只能求出向量A中与B不同的元素,B中与A不同的元素则要通过setdiff(B,A)求出。例如: 设A =...

如何提高MATLAB的运算速度

将提高MATLAB运算速度的途径总结为以下几点: 1. 硬件方面:CPU配置高一些; 2. 利用Profiler评估程序,查找出函数花费时间较多的地方优化; 3. 尽量少使用for或者while循环,而是向量化; 4. 循环中,尽量将变量预配置,即预先开辟空间,减少循环内部的动态配置; 5. 尽量使用MATLAB函数库中的自带函数; 6. 尽量将需实现的独立功能

Matlab中创建一个矩阵的3种常用方法

Matlab中创建一个矩阵的3种常用方法: 1、直接法:       A=[1 2 3;4 5 6]或A=[1,2,3;4,5,6]。       以上需注意两点,第一,矩阵a大小不用提前设定,Matlab根据后边矩阵内容自动确定。第二,矩阵同一行元素用空格' '或逗号','隔开,不同行用分号';'或回车分开。例如:                     2

MATLAB空矩阵

创建空矩阵 a = [];%[]表示为空 a = zeros(m,n);%创建m*n的全零矩阵,不同于空矩阵 判断空矩阵 isempty(a);判断a是不是空矩阵

MATLAB中sort函数对矩阵数进行排序

(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4,1],则sort(A)=[1,4,1;2,5,3] (2)B=sort(A,dim),对数组按指定方向进行升序排序, dim =1,表示对每一列进行排序,,dim=2表示对每一行进行排

setdiff:查找两个向量中不同的元素 + 外两则 去掉矩阵相同的东西

转自:http://blog.csdn.net/tina_lulu_21/article/details/6273646设有向量A和B,要求出A和B中的不同元素,可使用matlab自带的setdiff函数。语法为:    c = setdiff(A, B)  其计算公式为c = A - B。  需要注意的是此函数只能求出向量A中与B不同的元素,B中与A不同的元素则要通过setdiff(B,A)求出...

matlab 矩阵按照行列数值大小排序

[m,n]=size(y);   y1 = reshape(y,1,[]);   y2 = sort(y1,'descend');   y3 = reshape(y2,m,n);             %把矩阵y的元素按照从大到小排列   A=reshape(sort(reshape(abs(y),1,[]),'descend'),3,3)               %3*3的矩阵排

matlab将两幅灰度图片调整为相同大小

根据两幅灰度图片的大小调整为相同的尺寸,matlab实现,只限于灰度图片

加快MATLAB运行速度的三个方法

转自:http://www.matlabfan.com/viewthread.php?tid=893&page=1&fromuid=1217#pid7449 一、 遵守Performance Acceleration的规则 二、 遵守三条规则 三、 绝招 一、 遵守Performance Acceleration的规则 1、只有使用以下数据类型,matlab才会对其加速: l

MATLAB查看数组(矩阵、向量)的大小

MATLAB查看数组(矩阵、向量)的大小

相同大小二维矩阵卷积

二维矩阵卷积,两个图像大小相同 二维矩阵卷积,两个图像大小相同

matlab中生成数值一样的向量

生成100个5,用x = linspace(5,5,100); 1、             向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5]        2)用“:”生成向量               a=J:K 生成的行向量是a=[J,J+1,…,K]               a=J:D:K 生成行向量a=[J

matlab 与 Java 运算速度

最近运算程序时,发现 matlab计算速度跟 jave 差挺远的:一个算法在matlab中二十分钟,在java中一分钟。 最大原因在于数据结构问题: matlab用矩阵存储数据,空间上占用不少开销。而java有hashmap存储,大大提高了运算速度。 在运行大型程序时,matlab的矩阵能够达到上千万行,严重托延了计算速度。

setdiff:查找两个向量中不同的元素 + 外两则

如何求出两个向量中的不同元素?matlab中有自带的函数帮你解决!相关函数还有intersect和ismember

MATLAB中的点运算

例如   .* 点乘 .^ 点乘幂 .\ 点左除 ./ 点右除 解释:点运算是对相同维数的矩阵的对应元素进行相应的运算。 矩阵的点积,就是加点的情况 就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小 矩阵的乘法,就是不加点的情况 就是矩阵a的第一行乘以矩阵b的第一列,各个元素对应相乘然后求和作为第一元

求Matlab矩阵中各个不同元素或者某个元素出现的次数

1.求矩阵中各个不同的元素出现的次数 tabulate Frequency table.     TABLE = tabulate(X) takes a vector X and returns a matrix, TABLE.     The first column of TABLE contains the unique values of X.  The     secon

不同样本之间的相似性度量(Similarity Measurement)

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。   本文的目的就是对常用的相似性度量作一个总结。 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯

如何在matlab里对已知矩阵中的元素按从小到大进行排序,并提取其中位数

对矩阵的中位数进行提取主要利用两种函数,分别是sort函数和median函数,具体代码如下:%%首先按从小到大的顺序将元素进行排序处理A=sort(a(:));%%其中a(:)表示矩阵a的所有元素%%提取已经排序好的数组A进行中位数提取B=median(A);%%返回值为矩阵a中所有元素排序后的中位数例:具体matlab实现例子a=[1 3 4;5 4 6;3 6 8];A=sort(a(:));...

matlab 复制一个行向量为多个相同的行向量,用于求向量和矩阵距离

x=[1 2 3 ]; out=repmat(x,[3,1]); out=[1 2 3;1 2 3; 1 2 3];

matlab数组扩展大小的三种方法及其比较

matlab数组扩展大小的三种方法及其比较

Python Numpy的一些操作可以极大的加快你的code运行速度

So,想让你的code运行速度大大滴加快么?快使用Numpy自带的一些函数把!

开始学习Matlab_计算功能_微分diff/求导或向量矩阵比较

1、微分(注:diff()函数也可用于向量、矩阵之间列的比较)diff(f)      此函数是对函数f中的符号变量x(默认是x),或者定义的符号变量中没有x,则对字母表上离x最近的一个符号变量求导数diff(f,t)    此函数是对函数f中符号变量t求一阶(偏)导数diff(f,n)   n为整数时,表示对函数f求n阶导数diff(f,n,t) n为整数,t为函数变量时,表示对函数f中的函数变

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问