我是matlab新手,不熟悉矩阵数组。我有很多矩阵nx6:
<26x6 double>
<21x6 double>
<27x6 double>
<36x6 double>
<29x6 double>
<30x6 double>
....
每个矩阵都属于这种类型:
>> Matrix{1,1}
A B C D E F
1 2 6 223 735064.287500000 F11
2 3 6 223 735064.288194445 F12
3 4 6 223 735064.288888889 F13
4 5 6 223 735064.290277778 F14
>> Matrix{2,1}
A B C D E F
1 2 6 223 735064.700694445 F21
2 3 6 223 735064.701388889 F22
3 4 6 223 735064.702083333 F23
4 5 6 223 735064.702777778 F24
>> Matrix{3,1}
A B C D E F
1 2 7 86 735064.3541666666 F31
2 3 7 86 735064.3548611112 F32
3 4 7 86 735064.3555555555 F33
4 5 7 86 735064.3562499999 F34
5 6 7 86 735064.702777778 F35
>> Matrix{4,1}
A B C D E F
1 2 7 86 735064.3569444444 F41
2 3 7 86 735064.3576388888 F42
3 4 7 86 735064.3583333333 F43
4 5 7 86 735064.3590277778 F44
5 6 6 86 735064.702777778 F45
其中E和F是datenum
格式的日期。具体来说,F是时间差。
同时考虑所有矩阵,我想在列A、B、D中具有相等值的所有矩阵中求和列F的值。
对于D列的每个值(总线数),我想得到一个新的矩阵,如下所示:
A B C D H
1 2 6 223 F11+F21
2 3 6 223 F12+F22
3 4 6 223 F13+F23
4 5 6 223 F14+F24
A B C D H
1 2 7 86 F31+F41
2 3 7 86 F32+F42
3 4 7 86 F33+F43
4 5 7 86 F34+F44
5 6 7 86 F35+F45
提前感谢您的帮助!
这种方法应该可以让你开始。我建议建立一个矩阵来存储1、2和4列之间的比较。基于这个矩阵,你可以生成你的输出矩阵。
下面是一个例子(请注意我更改了矩阵{1,1}的第3行):
Matrix{1,1} = [ ...
1 2 6 223 735064.287500000 1;
2 3 6 223 735064.288194445 2;
3 4 6 223 735064.288888889 3;
4 5 6 223 735064.290277778 4];
Matrix{2,1} = [ ...
1 2 6 223 735064.700694445 10;
2 3 6 223 735064.701388889 10;
2 4 6 223 735064.702083333 10;
4 5 6 223 735064.702777778 10];
COMP = Matrix{1,1}(:,[1:2 4])==Matrix{2,1}(:,[1:2 4]);
a = 1;
for i=1:size(Matrix{1,1},1)
if sum(COMP(i,:)) == 3
SUM{1,1}(a,1:5) = Matrix{1,1}(i,1:5);
SUM{1,1}(a,6) = Matrix{1,1}(i,6) + Matrix{2,1}(i,6);
a = a + 1;
end
end
当比较列1、2和4时,矩阵COMP
为矩阵{1,1}
和矩阵{2,1}
中相同的每个元素存储1
这将if
-语句简化为检查一行中的所有元素是否一致(因此sum==3
)。如果满足该条件,将生成一个新矩阵(SUM{1,1}
),该矩阵将第6列中的条目相加,在这种情况下:
SUM{1,1}(:,6) =
11
12
14
我有几个矩阵,每个矩阵的列数相同,但行大小不同。每个矩阵都包含正值和负值。为了分组(因为有很多矩阵),每个矩阵都存储在一个2D单元数组中。举个小例子: 我试图将这些值规范化到-1到1的范围,以列方式,跨矩阵的方式。所以,使用这个例子,我得到了每列的最大值和最小值,并将它们放在两个向量中: 我现在如何应用最大值和最小值来规范化所有矩阵的每一列? 我使用以下代码获取最大值和最小值: 有人能帮我根据需要
你好,我是matlab新手,我不知道如何解决问题。 我有: 和Matrix2: Matrix2按照链接出现的顺序表示在Matrix1中找到的链接。 我想在块(矩阵)中分离链接,每个块从停止1开始。因此,通过分析矩阵2,我应该产生两个新的矩阵,一个是链接(1,2)(2,3)(3,4),另一个是链接(1,2)(2,3)(3,4)(4,5)。所以每次我找到stop 1,它就会开始构建一个新的矩阵 我希望
我有一个有三个带的光栅和一个有三个列的矩阵。 我想找到y的每一行和r的每一个单元格之间的角度。 我可以通过以下方式将光栅转换为矩阵: 现在,每个has矩阵都具有相同的形状(每个has矩阵中有3列,每行作为一个像素或来自y的样本)。我已经研究过如何使用嵌套的apply()函数,但老实说,我不理解语法,因此无法使其正常工作。 我有40个非常大的超光谱光栅(425个波段)和一个50行矩阵,我需要使用它来
主要内容:引用矩阵中的元素,删除矩阵中的一行或一列,矩阵运算,以下是纠正/补充内容:矩阵是数字的二维数组。 在MATLAB中,可以通过在每行中输入元素来创建一个矩形,以逗号或空格分隔数字,并使用分号标记每一行的结尾。 例如,创建一个矩阵 - MATLAB将执行上述语句并返回以下结果 - 引用矩阵中的元素 要引用矩阵的第行和第列中的元素,可以这样书写 - 例如,要引用矩阵的第行和第列中的元素,如上一节所述,可以这样书写 - MATLAB执行上述语句并返回以下结果 - 要引用第列中的
我有30个矩阵(1446x1124),包含从0到99的值。我想有一个输出矩阵,具有相同的大小,并且在每个单元中包含该矩阵的一个元素(例如2)在30个输入矩阵上的输出频率(在0和1之间)。
我在matlab中有一大堆2D矩阵(假设它们组成一个3D矩阵,其中第三维是时间),我试图从图像数据中制作视频。 我知道我可以使用surf()使用其中一个2D矩阵绘制曲面图,但我不确定调用哪个命令来获取所有2D矩阵并将其转换为曲面图的视频。 有人能帮忙吗?