精华内容
下载资源
问答
  • matlab矩阵与常量比较的返回值

    千次阅读 2011-02-10 16:11:00
    比如一个矩阵是 A=[0.6 0.1 0.2 0.3;... A中每个元素与常量相比较,返回一个和A同样大小矩阵B。B中每个元素为A中同样位置处的元素与常量比较后的值,大于常量的元素返回1,否则返回0.

    比如一个矩阵是

    A=[0.6 0.1 0.2 0.3;0.6 0.2 0.8 0.9];

    那么B=A>0.5的返回值是:

    B=[1 0 0 0;1 0 1 1];

    A中每个元素与常量相比较,返回一个和A同样大小的矩阵B。B中每个元素为A中同样位置处的元素与常量比较后的值,大于常量的元素返回1,否则返回0.

    展开全文
  • 我的一门课必须使用matlab脚本编程,可是网上教程大多数是如何进行数学的运算。于是我记录一二。 1.数组 1.1数组定义 a=[];%定义了一个a的数组 1.2数组大小 m=size(a);%得到a的行列数,m是1*2的矩阵 m=size(a,1);%...

    我的一门课必须使用matlab脚本编程,可是网上教程大多数是如何进行数学的运算。于是我记录一二。

    1.数组

    1.1数组定义

    a=[];%定义了一个a的数组
    

    1.2数组大小

    m=size(a);%得到a的行列数,m是1*2的矩阵,
    这个要注意,要是希望得到一个数一定要用下面两个
    m=size(a,1);%得到a的行数
    m=size(a,2);%得到a的列数
    

    1.3 引用

    引用数组(矩阵)的元素

    A(a,b:c)%第a行第b到c个元素
    A(a,b)%第a行第b列的元素
    A(a,:)%第a行所有元素
    

    就算是一个一维数组,引用时最好用a(1,i),而非a(i)
    数组是小括号,不是中括号

    注意数组下标从1开始

    2.循环

    2.1 while循环

    while (条件)
    执行语句
    end
    

    2.2 for循环

    for i=a: b: c
    执行语句
    end
    %a,b,c分别为起始量,步长,结束量
    

    3.输入输出

    3.1 输入

    1.p=xlsread('filename');%读入纯数字的矩阵,读进来放在p中,继续进一步处理
    2.p=csvread('filename');%功能如上
    

    3.2 输出

    1.fprintf(....)%标准输出,和c的完全一样,很好用,注意是单引号'',其他和c一样
    2.disp()%输出括号里的东西,最好是一个数或者矩阵
    3.不加分号会输出结果
    

    4. 判断

    if 判断语句
    执行语句1
    end
    
    if 判断语句1
    else
    判断语句2
    end
    
    a==b%a和b相等
    a~=b%a和b不等
    a>=b
    a<=b
    

    6.函数

    6.1 自定义函数

    function[output1,output2,...]=function_name(input1,input2,...)
    ...
    end
    

    超过一个返回值需要用一个数组来接收

    6.2 自带函数

    1.isnan(A(a,b))%判断A(a,b)是不是数字
    2.mean(A(a,:))%第a行求平均值
    3.偏度峰度等统计学函数这里从略
    4.plot(x,y)%以x为x轴画y的函数,y的每一行作为一个新的函数
    5.hold on %与plot配合,hold on 以后再plot就会画在同一个图中
    

    7.指针

    暂时没有遇到,且不管

    8.实例

    其实本来我用matlab写了一个DTW算法,但是由于是作业,不方便放出来,我就写一个快排,可以大致了解一下。
    注意这里数组a是全局变量,修改之前要先声明。
    或者可以选择改一次传回来一次,那就有点烦了。

    function [p] = findp(left,right,a)%找到p
    global a;
    i=left;
    j=right-1;
    while(i<j)
        while(a(i)<=a(right)&&i<j) i=i+1; end
        while(a(j)>=a(right)&&i<j) j=j-1; end
        t=a(i);a(i)=a(j);a(j)=t;%交换
    end
    if(a(i)>a(right)) t=a(i);a(i)=a(right);a(right)=t; end
    p=i;
    end
    
    
    function [a] = qsort(i,j,a)
    global a;
    if(i<j)
        p=findp(i,j,a);
        qsort(i,p,a);
        qsort(p+1,j,a);
    end
    end
    
    a=[1,2,9,5,6,8,7];
    global a;
    qsort(1,size(a,2),a);
    disp(a);
    

    绘图

    clf
    a1=0:1:0.1
    x=-1:0.1:1
    y=x;
    [x,y]=meshgrid(x,y);
    z1=sqrt(1-x.^2-y.^2);
    z2=-z1;
    surf(x,y,real(z1));
    hold on %画下一个
    surf(x,y,real(z2));
    axis equal
    
    

    总结

    总之matlab和c还是差不多的,和py可能更接近。了解了上面这些,处理一些简单的数字应该没问题。matlab比c方便的地方是矩阵,短处就是递归迭代计算时间太长。如果主要是数据的迭代,建议还是用c吧。

    展开全文
  • 两个一样大小矩阵,找出第一个矩阵第一行与第二个矩阵每行之间相同元素,然后找出第一个矩阵第二行与第二个矩阵每行之间相同元素,以此类推。 matlab尽量利用矩阵运算,避免for循环 a = randi(5,5) b = randi(5...

    原文转自 https://www.ilovematlab.cn/thread-147000-1-1.html

    两个一样大小的矩阵,找出第一个矩阵第一行与第二个矩阵每行之间相同元素,然后找出第一个矩阵第二行与第二个矩阵每行之间相同元素,以此类推。

    matlab尽量利用矩阵运算,避免for循环

    a = randi(5,5)
    b = randi(5,5)
    aR = repmat(a',[1,1,5]);
    aP = permute(aR,[3,2,1]);
    bs = b';
    bR = repmat(bs,[1,1,5]);
    DiffArr = aP == bR;   %DiffArr 第三维上的每一项对应于 a中的每一列对应于b的整个矩阵的差异

       


    扩展:

    有两个数,[x,y],想找出矩阵 a 中每行同时包括[x,y]的行索引

        ce = 0; % 不包含
        
        compn(:,:,1) = repmat(x,size(a));
        compn(:,:,2) = repmat(y,size(a));    
        compe = repmat(a,[1,1,2]);
        
        ifcom = compn==compe;
        com = sum(sum(ifcom,3),2);
        
        if find(com>1)
            [ce,~] = find(com>1);
        end

     

    展开全文
  • 我正在使用MATLAB对一些矩阵乘法技术进行原型设计并比较效率 . 最后,我将原型代码移动到C.这是一个家庭作业,我们需要编写一个有效的矩阵乘法例程(通过了解缓存大小,位置等) .我很好奇这两个非常相似的循环之间的...

    我正在使用MATLAB对一些矩阵乘法技术进行原型设计并比较效率 . 最后,我将原型代码移动到C.这是一个家庭作业,我们需要编写一个有效的矩阵乘法例程(通过了解缓存大小,位置等) .

    我很好奇这两个非常相似的循环之间的效率差异:

    Matrix Multiply Loop 1 - 对B - > C列的A次元素的列求和

    function [C] = dgemm_naivepe( A,B,C,n )

    for j=1:n

    tempcol=zeros(n,1);

    for k=1:n

    for i=1:n

    tempcol(i)=tempcol(i)+A(i+(k-1)*n)*B(k+(j-1)*n);

    end

    end

    for k=1:n

    C(k+(j-1)*n)=tempcol(k);

    end

    end

    结束

    Matrix Multiply Loop 2 - 对B列的A次元素的总和 - > C列

    function [C] = dgemm_naivepe( A,B,C,n )

    for j=1:n

    for k=1:n

    for i=1:n

    C(i+(j-1)*n)=C(i+(j-1)*n)+A(i+(k-1)*n)*B(k+(j-1)*n);

    end

    end

    end

    end

    经过几次不同矩阵大小的测试后,我发现 Loop 1 比 Loop 2 快 . 有人能帮助我理解为什么会这样吗?

    编辑:如您所见,矩阵以列主要顺序存储为1D数组 .

    展开全文
  • MATLAB教程

    2015-04-15 09:58:51
    二、 矩阵元素的访问及其大小的确定 6 三、 矩阵的算数运算 6 四、 关系运算 6 五、 逻辑运算 6 六、 集合运算 7 七、 MatLab的控制流 7 第二章 符号数学工具(Symbolic Math Toolbox) 10 第 1 节 符号表达式 10 第...
  • 7.max和min函数函数max和min用于求向量或者矩阵的最大或最小元素,它们的调用格式基本相同,这里以max为例进行说明。...(2)C=max(A,B):比较A、B中对应元素大小,A、B可以是矩阵或向量,要求尺寸相同,返回一...
  • 7.max和min函数函数max和min用于求向量或者矩阵的最大或最小元素,它们的调用格式基本相同,这里以max为例进行说明。...(2)C=max(A,B):比较A、B中对应元素大小,A、B可以是矩阵或向量,要求尺寸相同,返回一...
  • 二、 矩阵元素的访问及其大小的确定 6 三、 矩阵的算数运算 6 四、 关系运算 6 五、 逻辑运算 6 六、 集合运算 7 七、 MatLab的控制流 7 第二章 符号数学工具(Symbolic Math Toolbox) 10 第 1 节 ...
  • matlab学习3

    2019-10-03 12:43:27
    您可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。 >> [5 10 15] > 12 ans = 0 0 1可以使用关系运算符对两个数组的对应元素进行比较。这两个数组的...
  • matlab max()

    2015-08-26 21:41:00
    max()函数 (1)可以找出矩阵元素中每列的最大值  max(A) ,max(A,[],dim ),带返回值的[C,I]=max(A)、[C,I]=max(A,[],dim)  max(A,[],dim) ,dim=1按列来比较,每列...(3)可以表示矩阵元素与标量的比较  m...
  • max和min函数【Matlab

    千次阅读 2019-01-24 09:57:41
    1.max和min函数 函数max和min用于求向量或者矩阵的最大或最小元素,它们的调用格式基本相同,这里以max为例进行说明。...(2)C=max(A,B):比较A、B中对应元素大小,A、B可以是矩阵或向量,要求尺寸相同,返回...
  • matlab基础知识总结

    2015-03-18 21:36:56
    矩阵乘与点乘的区别: A*B 表示正常矩阵相乘,即A的列数和B的行数必须相同才能进行乘法运算。...1.档两个比较量是标量时,直接比较两个数的大小。若关系成立,关系表达式结果为1,否则为0 2.当参与比
  • matlab学习笔记 bsxfun函数

    千次阅读 2014-07-15 10:23:36
    【应用场合】当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。...
  • 参与比较的是常数时自动扩展成和矩阵大小相同的矩阵 %3*ones(size(a)) https://www.cnblogs.com/zhxmdefj/p/11374514.html 整除取余rem或mod rem(a,3) 常用逻辑函数 all 向量所有元素非零,结果为1 any 任何一个元素...
  • 【应用场合】当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。...
  • Matlab中bsxfun函数和repmat函数用法

    千次阅读 2017-08-23 15:03:29
    【应用场合】当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。...
  • 改善Matlab的运行效率 一叶方舟 2012.04 ...大部分元素为0的矩阵最好保存为系数矩阵,使用sparse函数进行转换 Reference [1] Matlab高级编程/苏金明,刘宏,刘波编著—北京:电子工业出版社,2005.8
  • 2.构造成对比较矩阵。常用的有1-9尺度。尺度大小取决于下层的元素个数。 3.计算权向量并作一致性检验。引入一致性指标CI,CI越大,不一致越严重。引入随机一致性指标RI。定义一致性比率CR=CI/RI。CR<0.1时,通过...
  • 3.3.7 矩阵元素的求和 3.3.8 矩阵元素的求积 3.3.9 矩阵元素的差分 3.4 矩阵运算 3.4.1 矩阵分析 3.4.2 矩阵分解 3.4.3 特征值和特征向量 3.5 稀疏矩阵 3.5.1 稀疏矩阵的存储方式 3.5.2 稀疏矩阵...
  • MATLAB实现K-means聚类

    2015-09-20 16:50:53
    % sort 列元素按升序排列,Xord中存的是元素在原始矩阵中的列中对应的大小位置 [Xsort,Xord] = sort(X,1); case 'cosine' % 余弦 % 计算每一行的和的平方根 Xnorm = sqrt(sum(X.^2, 2)); if any(min(Xnorm) ...
  • 3.3.6 矩阵元素的排序 3.3.7 矩阵元素的求和 3.3.8 矩阵元素的求积 3.3.9 矩阵元素的差分 3.4 矩阵运算 3.4.1 矩阵分析 3.4.2 矩阵分解 3.4.3 特征值和特征向量 3.5 稀疏矩阵 3.5.1 稀疏矩阵的...
  • 本章主要介绍了MATLAB的基本程序元素、几种设计中经常使用的数据类型和矩阵操作函数,以及程序设计的5种句型(for、while循环结构、if、switch条件分支结构和try…catch结构)。以后以专题形式,分别详细讲解了编程...
  • b1=rand(2,2)%产生一个元素均在0~1的2*2矩阵,rand产生0到1的数值 b2=b1>=0.6%成立为1,不成立为0 b3=b1<0.7 c1=eq(b2,b3)%是否相等 c2=b2~=b3%是否不相等 比较大小: clear all; format long ...
  • 2020-12-15

    2020-12-15 11:31:15
    RGB图像,三维矩阵,分成R、G、B三个二维矩阵,怎么比较三个矩阵对应位置元素大小,就像R的第一个元素、G的第一个元素、B的第一个元素,这三个比较大小,……,比完所有后,最大的放一个矩阵,最小的放一个矩阵,...
  • bsxfun

    2014-10-06 19:05:53
    【应用场合】当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。...
  • 图像增强的实现

    2012-06-07 15:42:03
    1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

matlab比较矩阵元素大小

matlab 订阅