精华内容
下载资源
问答
  • Matlab 比较个数大小

    千次阅读 2019-12-03 11:11:47
    J1 = 0.1; J2 = 0.2; J3 = 0.05; if (J1 <= J2 && J1 <= J3) % min = J1; J = 1; else if (J2 <= J3) % min = J2; J = 2; else % min = J3; J = 3; ...
    J1 = 0.1;
    J2 = 0.2;
    J3 = 0.05;
    if (J1 <= J2 && J1 <= J3)
    %     min = J1;
        J = 1;
    else if (J2 <= J3)
    %         min = J2;
            J = 2;
        else
    %         min = J3;
            J = 3;
        end
    end
    J
    %另一种更简洁的方法
    a = [J1 J2 J3];
    [m index] = min(a); 
    J = index

     

    展开全文
  • 第一for循环是进行次数,第二for循环是比较大小并交换,使最大的到最后 function f=funn(a) n=length(a); for i=1:n-1 for j=1:n-1 if a(j+1)<=a(j) temp2=a(j); a(j)=a(j+1); a(j+1)=temp2; end end end f...

    第一个for循环是进行次数,第二个for循环是比较大小并交换,使最大的数到最后

    function f=funn(a)
    n=length(a);
    for i=1:n-1
    for j=1:n-1
    if a(j+1)<=a(j)
    temp2=a(j);
    a(j)=a(j+1);
    a(j+1)=temp2;
    end
    end
    end
    f=a;

    展开全文
  • 这个题集后面的内容都是DP,头疼。1.输入n个整数,输出最小的k个Solution-1: 先排序后输出O(nlogn)//快速排序复杂度Solution-2:把数组分为length=k, ...他们任意两个数的和又可以组成一个数组,求这个和中前k个...

    这个题集后面的内容都是DP,头疼。

    1.输入n个整数,输出最小的k个

    Solution-1: 先排序后输出O(nlogn)//快速排序复杂度

    Solution-2:把数组分为length=k, length=n-k两部分,通过比较大小来做//O(n*k)

    Solution-3:用堆来处理O(n*logk)

    Further:

    谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?

    似乎没有办法,最坏的情况只有是在

    的情况中取到k个最小值。

    必须要对两个数组分别排序。

    2.寻找和为定值的两个数

    输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。

    要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。

    例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

    Solution-1: 已知需要的和15,做减法得到所需差值数组14、13、11、8、4、0

    2.2 寻找和为定值的两个数 | 编程之法:面试和算法心得wizardforcel.gitbooks.io

    我觉得这个说法有问题,题目又没说数组有序,加上排序就不止O(n)了,而是O(nlogn)

    Solution-2: hash,构造hash表

    分析:这类题就是排序与选择算法的问题

    3.寻找和为定值的多个数

    输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来。

    分析:不定个数就可以思考一下Tree,毫无疑问decision tree+pruning是可以奏效的,但有点花时间调代码,也不高效。

    这道题同时也可视为 01背包问题的变种

    不要gakki也要学会的:动态规划(DP)问题解析www.jianshu.com
    2152e6e402adf2e0f4a40bb56906986e.png

    不同于我们文中提到的最小张钞票凑钱,或者最大价值装背包的问题,我们现在要穷举出所有的可能组合,而不是最值组合。

    感觉状态转移方程一对多就不叫状态转移方程了,类似于人工智能里面的inital state发展的问题。

    inital state -> serval states:[]->...

    4.最大连续子数组和

    输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值,要求时间复杂度为O(n)。

    例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。

    这道题的难点在于,你不可能把负元素直接剔除掉,例如-4的左右分别是10和7,这个-4多半是会被计算到邻近的子数组里的。

    无疑可以用DP来解了,毕竟有了最大这个最值条件,我们就可以列出正常的状态转移方程。

    我们用d(i)来表示以L[i]结尾的子数组的最大和,那么有:

    d(0)=1

    d(1)=max{d(0),d(0)-2,-2}=1

    d(2)=?

    这里就要注意了,显然我们的状态转移方程走不通,不适用于L[i-1]为负数并且d(i-1)没有加入L[i-1]的情况

    那么当前的状态转移方程是不对的,我们应该分写成条件分段函数

    1da0aa4892e926c882e5e4632851a33a.png

    分析:为啥要用i结尾的子数组最大和来处理问题?因为我们需要的是全局子数组最大和,要简化问题,就要找到突破口,如果是子数组和,显然是不行的,因为我们没法判断是不是中间出现一个负数应该中断。

    在要求f(i)必然和f(i-1)有关的情况下,可以联想到以下标作为开头或者结尾,姑且我们以下标作为结尾。

    这样问题就变成了,是不是要在L[i]的基础上加入前面的子数组。

    5.跳台阶问题

    一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。

    求总共有多少总跳法,并分析算法的时间复杂度。

    分析:这是一道简单地DP问题

    设剩余台阶数为i,一共的跳法为d(i)

    那么:

    d(1)=1//就只能跳一步

    d(2)=2//1+1 or 2

    d(3)=3//1+1+1 or 1+2 or 2+1

    d(4)=5//2+2 or 1+1+1+1 or 2+1+1 or 1+2+1 or 1+1+2

    d(i)=d(i-1)+d(i-2)

    这似乎也可以用于求解n天后学校食堂的斐波那契汤问题...

    既然有了状态转移方程,我们可以轻易得到结果

    6.奇偶排序

    输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。

    Solution-1: 两个指针,一个从头开始,一个从尾部开始,从头开始的遇到偶数位就停住,从尾开始的遇到奇数位就停住,如果两个指针都停住时,交换两个slot的值,继续向中间汇合,汇合之后,算法结束。

    时间复杂度O(n)

    这是块排partition操作的变种(invisible midium)

    7.荷兰国旗问题

    pass

    8.矩阵相乘

    请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法

    Strassen乘法应该看看这篇文章,叙述很清晰文笔很好,都可以用作讲义了

    矩阵乘法Strassen算法www.jianshu.com
    8c3ceed4535c0a7806f83493dec31860.png

    练习题部分:

    9.不用除法运算

    两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]a[1]a[2]...*a[N-1]/a[i]; 要求:

    • 1.不准用除法运算
    • 2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)
    • 3.满足时间复杂度O(n),空间复杂度O(1)。

    提示:题目要求b[i] = a[0]a[1]a[2]...a[N-1]/a[i] ,相当于求:a[0]a[1]a[2]a[3]...a[i-1]a[i+1]..a[N-1],等价于除掉当前元素a[i],其他所有元素(a[i]左边部分,和a[i]右边部分)的积。

    记left[i]=∏a[k], (k=1...i-1); right=∏a[k], (k=i+1...n),根据题目描述b[i]=left[i] * right[i], 对于每一个b[i]初始化为1,left[i]和right[i]两部分可以分开两次相乘,即对于循环变量i=1...n, b[i]=left[i];b[n-i]=right[n-i], 循环完成时即可完成计算。

    解析:这道题其实是考对procedural language的较深理解。

    要知道不是所有语言都是有state的,比如Prolog。

    既然有state,我们不妨吧b[i]看做一个state在内存中的变量,也就是一个状态(这句话可以跳过)

    分成两部分,0..i-1, n..i+1,先顺序更新每个b[i]到

    ,这个操作很简单,b[i]=b[i-1]*a[i-1]

    同理,倒序更新每个b[i]*=

    大功告成。

    10.找出数组中唯一重复元素

    1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。 每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?

    分析:这题唯一的考点就是不用辅助存储空间

    Soultion1: 暴力解法毫无疑问是轮询,比较i和其他index有没有值相同,这样是

    Solution2:根据题目中特定条件,1-1000,只有唯一元素重复

    int ret = sum(Array)-sum(1..1000),

    Solution3:利用

    可求出大部分元素重复两次数组中仅出现一次的一个数

    对于这道题,我们需要的是唯一重复的这个元素,显然我们需要拼凑一个1..1000到异或中去,就能得到奇数个异或1个,这个数即使return值

    11.找出数组中仅有的三个重复元素

    一个数组里,数都是两两出现的,但是有三个数是唯一出现的,找出这三个数。

    找出数组中单独出现的3个数 - weixin_34162228的博客 - CSDN博客blog.csdn.net

    12.找出反序的个数

    给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。 即:数组a[]; 对于i < j 且 a[i] > a[j],则称这是一个反序。 给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数。

    展开全文
  • matlab

    2020-12-29 16:15:40
    a=round(rand(5)) a = 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 b=rank(a) ...%说明:求矩阵的秩有很多种方法,Matlab 的 rank 函数是借助...若是单纯的是两个数字 ,则是进行大小比较,rank(k,j),k>..

    a=round(rand(5))
    a =
    1 0 0 0 1
    1 0 1 0 0
    0 1 1 1 1
    1 1 0 1 1
    1 1 1 1 1

    b=rank(a)
    b = 4
    %说明:求矩阵的秩有很多种方法,Matlab 的 rank 函数是借助矩阵奇异值分解的方法计算的。
    若是单纯的是两个数字 ,则是进行大小比较,rank(k,j),k>j返回1;k<=j,返回0.
    matlab的rank函数是利用奇异值来计算秩的,但因为精度问题,计算出的数值是很小正数,因此通过后台计算出一系列的奇异值,matlab直接拿等于不等于0作为判断欠缺考虑,那就取一个很小的正数作为判据,只要奇异值小于这个判据,就认为是零,这个就是tol。

    mldivide,
    \是对线性方程组 Ax = B 求解 x全页折叠
    语法
    x = A\B
    x = mldivide(A,B)
    说明
    示例
    x = A\B 对线性方程组 Ax = B 求解。矩阵 A 和 B 必须具有相同的行数。如果 A 未正确缩放或接近奇异值,MATLAB® 将会显示警告信息,但还是会执行计算。
    如果 A 是标量,那么 A\B 等于 A.\B。
    如果 A 是 n×n 方阵,B 是 n 行矩阵,那么 x = A\B 是方程 A
    x = B 的解(如果存在解的话)。
    如果 A 是矩形 m×n 矩阵,且 m ~= n,B 是 m 行矩阵,那么 A\B 返回方程组 Ax= B 的最小二乘解。
    x = mldivide(A,B) 是执行 x = A\B 这一操作的替代方法,但很少使用。它可以启用类的运算符重载。
    示例
    全部折叠
    方程组
    打开实时脚本
    对简单的线性方程组 A
    x = B 求解。

    A = magic(3);
    B = [15; 15; 15];
    x = A\B
    x = 3×1

    1.0000
    1.0000
    1.0000
    

    包含奇异矩阵的线性方程组
    打开实时脚本
    对包含奇异矩阵 A 的线性方程组 A*x = b 求解。

    A = magic(4);
    b = [34; 34; 34; 34];
    x = A\b
    Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.306145e-17.
    x = 4×1

    1.5000
    2.5000
    

    -0.5000
    0.5000

    如果 rcond 在 0 和 eps 之间,MATLAB® 会发出接近奇异的警告,但还会继续计算。如果处理的是病态矩阵,尽管残差 (b-A*x) 相对较小,还是有可能出现不可靠解。在此特例中,残差的范数是零,尽管 rcond 很小,仍能求得精确解。

    当 rcond 等于 0 时,会出现奇异警告。

    A = [1 0; 0 0];
    b = [1; 1];
    x = A\b
    Warning: Matrix is singular to working precision.
    x = 2×1

     1
    

    Inf

    这种情况下,除以零会导致计算涉及 Inf 和/或 NaN,使得计算结果不可靠。

    欠定方程组的最小二乘解
    打开实时脚本
    对线性方程组 A*x = b 求解。

    A = [1 2 0; 0 4 3];
    b = [8; 18];
    x = A\b
    x = 3×1

         0
    4.0000
    0.6667
    

    包含稀疏矩阵的线性方程组
    打开实时脚本
    使用稀疏矩阵对简单的线性方程组求解。

    考虑以下矩阵方程 A*x = B。

    A = sparse([0 2 0 1 0; 4 -1 -1 0 0; 0 0 0 3 -6; -2 0 0 0 2; 0 0 4 2 0]);
    B = sparse([8; -1; -18; 8; 20]);
    x = A\B
    x =
    (1,1) 1.0000
    (2,1) 2.0000
    (3,1) 3.0000
    (4,1) 4.0000
    (5,1) 5.0000

    输入参数
    全部折叠
    A - 系数矩阵
    向量 | 满矩阵 | 稀疏矩阵
    系数矩阵,指定为向量、满矩阵或稀疏矩阵。如果 A 具有 m 行,则 B 也必须具有 m 行。

    数据类型: single | double
    复数支持: 是
    B - 右侧
    向量 | 满矩阵 | 稀疏矩阵
    右侧,指定为向量、满矩阵或稀疏矩阵。如果 B 具有 m 行,则 A 也必须具有 m 行。

    数据类型: single | double
    复数支持: 是
    输出参数
    全部折叠
    x - 解
    向量 | 满矩阵 | 稀疏矩阵
    解,以向量、满矩阵或稀疏矩阵返回。如果 A 是 m×n 矩阵,B 是 m×p 矩阵,那么 x 是 n×p 矩阵,包括 p==1 的情况。

    如果 A 具有满存储,则 x 也是完全的。如果 A 是稀疏矩阵,则 x 与 B 具有相同的存储。
    提示
    运算符 / 和 \ 通过以下对应关系而相互关联:B/A = (A’\B’)’。
    如果 A 是方阵,则 A\B 约等于 inv(A)*B,但 MATLAB 会用不同的更为稳健的方式处理 A\B,而且效果更好。
    如果 A 的秩小于 A 中的列数,则 x = A\B 不一定是最小范数解。您可以使用 x = lsqminnorm(A,B) 或 x = pinv(A)*B 来计算最小范数最小二乘解。
    算法
    全部折叠
    mldivide 在求解线性方程组方面的多用性源于其能够在调度适当的结算器时利用问题中的对称性。此方法旨在最大限度减少计算时间。该函数首先区分满(也称为“稠密”)和稀疏输入数组。

    针对完全输入的算法
    下面的流程图显示当输入 A 和 B 为完全时的算法路径。

    针对稀疏输入的算法
    如果 A 是满矩阵,B 是稀疏矩阵,则 mldivide 将 B 转换为满矩阵并使用完整算法路径(如上)计算具有满存储的解。如果 A 是稀疏矩阵,则解 x 的存储与 B 的解相同,并且 mldivide 遵循稀疏输入的算法路径,如下所示。

    扩展功能
    tall 数组
    对行数太多而无法放入内存的数组进行计算。
    C/C++ 代码生成
    使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
    另请参阅
    chol | inv | ldivide | ldl | linsolve | lu | mrdivide | pinv | qr | rdivide

    主题
    数组与矩阵运算
    运算符优先级
    线性方程组
    Operator Overloading
    MATLAB 运算符和特殊字符
    在 R2006a 之前推出

    展开全文
  • MATLAB教程

    2015-04-15 09:58:51
    三、 两个正态总体均值差的检验(t检验) 85 第 8 节 回归分析 86 一、 ployfit函数进行回归分析 86 第 9 节 概率统计作图 86 一、 做概率分布函数图形的通用函数 86 二、 做概率分布函数图形的专用函数 86 三、 ...
  • 四分位数、中位、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几样本的比较。画图步骤:1、画数轴,度量单位大小和数据批的单位...
  • matlab学习3

    2019-10-03 12:43:27
    您可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始组相同大小的逻辑...这两个数组的大小必须相同,其比较结果是与这两个数组具有相同大小的逻辑数组。 >> [5 10 15] > [6 9 20]...
  • 数据分析任务的背景信息介绍:这次的任务所使用的数据来自作者本人...实验:数量比较任务被试:20人材料:24组数字对,其中1~12为近距离数字对,13~24为远距离数字对实验程序:要求被试比较数字对中数字的大小,按...
  • 9 多目标Pareto最优解搜索算法(胡斐) 多目标优化是指在约束条件下有两个两个以上的优化目标,而且这些目标之间相互矛盾,不能同时达 到最优,也就是说,一个目标的最优往往是以牺牲其它目标作为代价的,因此多...
  • MATLAB关系运算符和逻辑运算符

    千次阅读 2018-08-22 16:57:40
    1 关系运算符 关系运算符用来比较两个数之间的大小关系,在Matlab中的关系运算符包括: &lt; 小于 &lt;= 小于或等于 &gt; 大于 &gt;=
  • 数据分析任务的背景信息介绍:这次的任务所使用的数据来自作者本人...实验:数量比较任务被试:20人材料:24组数字对,其中1~12为近距离数字对,13~24为远距离数字对实验程序:要求被试比较数字对中数字的大小,按...
  • 三、 两个正态总体均值差的检验(t检验) 85 第 8 节 回归分析 86 一、 ployfit函数进行回归分析 86 第 9 节 概率统计作图 86 一、 做概率分布函数图形的通用函数 86 二、 做概率分布函数图形的专用函数 ...
  • MATLAB中的关系和逻辑运算式中所有输入非0的数都为逻辑真只有0才为逻辑假而计算结果即输出为一个逻辑数组其中的元素如果值为1则表示真如果值为0则表示假 4.3 逻辑类型 应用举例 例如比较10与100这两个数大小代码...
  • matlab基础知识总结

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

    2021-01-08 19:15:01
    比较两个数大小 max和min基础的用途是,求两数中最大的或最小的一个。 比如,max(a,b)。如果a>b,则返回值为a。min(a,b)则返回b。 求矩阵中每列的最大最小值 如果a是一个m行n列的矩阵。max(a)则求每列中的...
  • 四分位数、中位、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几样本的比较。画图步骤:1、画数轴,度量单位大小和数据批的单位...
  • 语音识别的MATLAB实现

    热门讨论 2009-03-03 21:39:18
    在此线程中做如下两个工作:将数据送入buffer,并将数据传入某个参数(其调用一个函数,将buffer中的数据送入该函数的参数*pt),而这些数据正是我们要利用和处理的数字化的语音信息。 2 声音的预处理: 声音信息的...
  • 直觉模糊交叉熵将信息熵的涵义加以推广,在保留原有直觉模糊集完整信息的基础上,还可以用来测量直觉模糊集之间的模糊程度和未知程度,当两个直觉模糊的交叉熵值越大时,意味着两者的距离越远。下面通过举例...
  • MATLAB实现K-means聚类

    2015-09-20 16:50:53
    % strcmp比较两个字符串 uniform是在X中随机选择K个点 if strcmp(start, 'uniform') if strcmp(distance, 'hamming') error('Hamming distance cannot be initialized with uniform random values.'); end % ...
  • 以为计划将图像像素向量当做图像的特征向量所以特征变量个数比较多,要通过训练层autoencoder,来降低图像特征变量的个数      第一层autoencoder是吧784个变量投影到100个变量,第二层是把100个变量投影...
  • min函数在c++中的应用,使用min函数时,需要加上algorithm头文件,可以实现比较两个数大小。 #include&lt;iostream&gt; #include&lt;algorithm&gt; using namespace std; int main() { double a...
  • 通过详细讲解密码登录框和科学计算器这两个实例,使读者深入、熟练地掌握采用MATAB GUI进行工程项目设计的精髓。每个实例都有详细的构思和源程序,源程序包含详细的注释说明。通过本章的练习,读者可以独立完成复杂...
  • 相关系数,其实就是衡量两个变量之间相关性的大小的指标,常用的相关系数有两种,一种是pearson相关系数,也就是《概率论与数理统计》这本书里提到的,平时最为常用的相关系数。另一种称之为spear...
  • 机器学习(三)k均值聚类

    千次阅读 2015-04-22 21:18:10
    高斯混合模型和k均值聚类是聚类算法中的比较常用而简单的算法,这里先介绍k均值聚类算法。K均值聚类算法实现分为四...由于聚类个数选择4,因此我们用matlab随机生成4个不重复的整数,且大小不超过数据点的个数,得
  • 保持较大的数字总是在右边(按照左小右大大的顺序排序),如果不是则交换两个数字的位置,如果满足则右移一位继续比较下面两个数字的大小,如此往复直至排序结束。 冒泡排序的Matlab实现 %冒泡排序算法(从左到右...
  • 图像增强的实现

    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) 就算和显示索引...
  • 这次更新的是DTF跟FFT这两个功能,DFT的函数在Bmp.cpp的DFT里面,在里面已经加上了注释了。 而FFT在fft12_ifft12.cpp这个文件里面,文件包括了一维FFT和二维FFT的函数,当然IFFT也是存在的。 关于DFT的部分,由于我...
  • 光电综合实验设计

    2012-11-20 18:04:31
    增大,衍射光强……,两个主极大之间有……极小,有..….次极大…... 设计要求: (1)有友好输入输出界面; (2)对影响光强分布的一些参数(如缝宽a、缝周期d、光波波长 ,缝N等)可调,并可根据调整的参数作出...
  • 显示100个数(若是一个一个绘制将会非常慢,可以将要画的数字整理好,放到一个矩阵中,显示这个矩阵即可) - 初始化一个二维数组 - 将每行的数据调整成图像的矩阵,放进二维数组 - 显示即可 ''' pad = 1 ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

matlab比较两个数大小

matlab 订阅