“matlab”矩阵的长度怎么计算?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“matlab”矩阵的长度怎么计算?相关的知识,希望对你有一定的参考价值。

“matlab”矩阵的长度的计算方法如下:

1、size函数。

s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。

[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。

如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。 其中r=size(A,1)该语句返回的时数组A的行数, c=size(A,2) 该语句返回的时数组A的列数。

比如:A是4*3的矩阵,即A=[1,2,3;4,5,6;7,8,9;0,2,3]。
size(A)返回矩阵A的行数和列数,即4   3。如果只想要得到行数,则用size(A,1);如果只想要列数,则用size(A,2)。

2、length函数。

n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A)):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数。

参考技术A

A+B,A-B,8A,A的平方,A*B,矩阵A的逆.
1.A+B
>>A=ones(3);B=magic(3);C=A+B
2.A-B
>>%同上
3.8A
>>8*A
4.A的平方,A*B,矩阵A的逆.
>>A.^2;A^2;A*B;A.*B;inv(A);
注意:像带点"."时对应元素相乘((如A.*B)),不带时矩阵相乘(如A*B).
% 由m行n列构成的数组称为(m×n)阶矩阵.
% 用"[]"方括号定义矩阵;
% 其中方括号内","逗号或" "空格号分隔矩阵列数值;
% ";"分号或"Enter"回车键分隔矩阵行数值.
% 例:a=[a11 a12 a13;a21 a22 a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个2*3
% 阶矩阵a.
% aij可以为数值、变量、表达式或字符串,如为数值与变量得先赋值,表达式和变量可以
% 以任何组合形式出现,字符串须每一行中的字母个数相等 ,调用时缺省状态按行顺序取字
% 母,如a(1)为第一行第一个字母.
%
% 常用函数如下:函数命令 说明
% size(a)
% [d1,d2,d3,..]=size(a)  求矩阵的大小,对m*n二维矩阵,第一个为行数m,第二个为
% 列数n;
% 对多维矩阵,第N个为矩阵第N维的长度.
% cat(k,a,b) 矩阵合并,运行a = magic(3)
%        b = pascal(3)
%        c = cat(4,a,b)
% 改4为3或2或1,自己体会合并后的效果.
% k=1,合并后形如 [a;b],行添加矩阵(要求a,b的列数相等才能合并);
% k=2,合并后形如[a,b],列添加矩阵(要求a,b的行数相等才能合并),以此类推,n维的矩
% 阵合并,要求n-1维维数相等才可以).
% fliplr(a) 矩阵左右翻转
% flipud(a) 矩阵上下翻转
% rot90(a)
% rot90(a,k) 矩阵逆时针旋转90度(把你的头顺时针旋转90看原数就可以知道结果了)
% k参数定义为逆时针旋转90*k度.
% flipdim(a,k) 矩阵对应维数数值翻转,如k=1时,行(上下)翻转,k=2时,列(左右)翻转.
% tril(a)
% tril(a,k) 矩阵的下三角部分(包括对角线元素),对应k=0时的取值数.
% k参数设置为正负数值对应对角线向上或向下移动k行划分下三角元素.
% triu(a)
% tril(a,k) 矩阵的上三角部分(包括对角线元素),对应k=0时的取值数.
% k参数设置为正负数值对应对角线向上或向下移动k行划分上三角元素.
% diag(a)
% diag(a,k) 生成对角矩阵或取出对角元素,对应k=0时的取值数.
% k参数设置为正负数值对应对角线向上或向下移动k行取对角元素或生成对角矩阵.
% repmat(a,m,n) 矩阵复制,把矩阵a作为一个单位计算,复制成m*n的矩阵,其每
% 一元素都含一个矩阵a,实际结果为一个size(a,1)*m行,size(a,2)*n列的矩阵.
% w=meshgrid(s,t)
% [u,v]=meshgrid(s,t) 生成行m=size(t,1)*size(t,2),列n=size(s,1)*size(s,2))
% 阶的两个矩阵.其中u为按行顺序取s的n个矩阵元数,按列排列重复m行,v为按列顺序取t的
% m个矩阵元数 ,按行排列重复n列.只生成一个矩阵时,w=u.
% eye(a)
% eye(a,k) 生成a阶单位方阵
% k参数设置为生成a×k阶单位矩阵,即生成a阶单位方阵后,取前k列,不足补0.
% ones(a)
% ones(a,k) 生成a阶全1方阵
% k参数设置生成a×k阶全1矩阵.
% zeros(a)
% zeros(a,k) 生成a阶全0方阵
% k参数设置生成a×k阶全0矩阵.
% inv(a) 生成a的逆矩阵
% l        求矩阵的长度的函数
a=[10,2,12;34,2,4;98,34,6];
size(a)
%
% ans =
%
% 3        3
%
length(a)
%
% ans =
%
% 3
% 1.       通过在矩阵变量后加’的方法来表示转置运算
a=[10,2,12;34,2,4;98,34,6];
a'
%
% ans =
%
%     10    34    98
%
%      2     2    34
%
%     12     4     6
% 2.       矩阵求逆
inv(a)
% ans =
%
%    -0.0116    0.0372   -0.0015
%
%     0.0176   -0.1047    0.0345
%
%     0.0901   -0.0135   -0.0045
% 3.       矩阵求伪逆
pinv(a)
%
% ans =
%
%    -0.0116    0.0372   -0.0015
%
%     0.0176   -0.1047    0.0345
%
%     0.0901   -0.0135   -0.0045
%
% 4.       左右反转
fliplr(a)
%
% ans =
%
%     12     2    10
%
%      4     2    34
%
%      6    34    98
%
% 5.       矩阵的特征值
[u,v]=eig(a)
% u =
%
%    -0.2960    0.3635   -0.3600
%
%    -0.2925   -0.4128    0.7886
%
%    -0.9093   -0.8352    0.4985
%
% v =
%
%    48.8395        0        0
%
%        0  -19.8451        0
%
%        0        0  -10.9943
% 6.       上下反转
flipud(a)
% ans =
%
%     98    34     6
%
%     34     2     4
%
% 10     2    12
%
% 7.       旋转90度
rot90(a)
%
% ans =
%
%     12     4     6
%
%      2     2    34
%
% 10    34    98
%
% 8.       取出上三角和下三角
triu(a)
%
% ans =
%
%     10     2    12
%
%      0     2     4
%
%      0     0     6
tril(a)
%
% ans =
%
%     10     0     0
%
%     34     2     0
%
%     98    34     6
[l,u]=lu(a)
%
% l =
%
%     0.1020    0.1500    1.0000
%
%     0.3469    1.0000        0
%
%     1.0000        0        0
%
% u =
%
%    98.0000   34.0000    6.0000
%
%        0   -9.7959    1.9184
%
%        0        0   11.1000
%
% 9.       正交分解
[q,r]=qr(a)
%
% q =
%
%    -0.0960   -0.1232   -0.9877
%
%    -0.3263   -0.9336    0.1482
%
%    -0.9404    0.3365    0.0494
%
% r =
%
%  -104.2113  -32.8179   -8.0989
%
%        0    9.3265   -3.1941
%
% 0        0   -10.9638
%
% 10.奇异值分解
[u,s,v]=svd(a)
%
% u =
%
%     0.1003   -0.8857    0.4532
%
%     0.3031   -0.4066   -0.8618
%
%     0.9477    0.2239    0.2277
%
% s =
%
%   109.5895        0        0
%
%        0   12.0373        0
%
%        0        0    8.0778
%
% v =
%
%     0.9506   -0.0619   -0.3041
%
%     0.3014    0.4176    0.8572
%
%     0.0739   -0.9065    0.4156
%
% 11.求矩阵的范数
norm(a)
%
% ans =
%
%   109.5895
norm(a,1)
%
% ans =
%
%    142
norm(a,inf)
%
% ans =
%
%    138

matlab怎么计算线段的长度

就是这个图,怎么求图中那把尺子的长度

参考技术A 请问您要求图上的长度(单位:像素)还是实际场景中的长度?
图上长度稍简单一些,我想可以先分割出尺子来,然后用霍夫变换做直线检测以定出直线,进而找到端点,求线段长度的。
如果需要实际场景中的长度,必须要有相机的内外参数才可以。追问

不是实际中的长度,只要能求出一个相对长度就行,是用matlab做么?

追答

我觉得现在关键还是算法吧。请问您有做过图像处理吗?

追问

嗯,目前从事这方面的工作,图像处理的基本操作我都会,分割我也会

追答

嗯嗯 那我上面的思路您觉得怎么样?您之前是怎样的思路?

您之前用什么语言和工具处理图像?

追问

我用过matlab和ENVI,主要是用matlab,我这个是新的问题,没有什么思路,我刚刚找了一些霍夫变换的程序,试了试,效果不是很好.还有就是怎么通过霍夫变换找到端点呀,我主要就是要找端点

追答

霍夫变换不能找端点。我的想法是,找到偏离直线一定阈值范围内所有尺子上的像素点,找到其中纵坐标最大最小的两个点作为端点。

追问

你的这个想法能用编程帮我实现么?

追答

能,但是我不会自己写的,既然您是做相关工作的,自己动手写一下代码也是应该的吧。

追问

你看看这是我裁切,hough处理过的图片,主要是后面那个步骤我不太会

追答

我觉得主要是分割那一步的准确性,如果分割好的话,可以用提取骨架的方法来减少噪声干扰。
后面的工作也不难:霍夫变换的原理您应该是知道的吧,Hough变换拿到直线参数,那就可以取所有分割出的点的坐标来,代入直线方程来检验偏离程度。取偏离较小(阈值自己设)的点,从中找纵坐标最大/小的。

本回答被提问者采纳

以上是关于“matlab”矩阵的长度怎么计算?的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎么求矩阵的绝对值

MATLAB如何求相关系数

matlab怎么计算线段的长度

matlab 怎么表示一个矩阵的转置?

怎么在 matlab 打乱矩阵顺序然后还原

MATLAB 向量化:计算邻域矩阵