matlab 直接得到矩阵一列、或者一行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 直接得到矩阵一列、或者一行相关的知识,希望对你有一定的参考价值。
我没有学过MATLAB,就是学校平时实验的时候用到,遇到不会的就上网查
每次想要输出一个大矩阵的其中一行或者一列的时候,都是得用循环语句的方式,不知道有没有直接的语句输出矩阵的一行或者一列?
1、提取出矩阵的一行:
clear
clc
a=[1 2 3 4;5 6 7 8;1 2 3 4;6 7 8 9]
c=a(1,:) %提取出矩阵的一行
2、提取出矩阵的一列:
clear
clc
a=[1 2 3 4;5 6 7 8;1 2 3 4;6 7 8 9]
d=a(:,3) % 提取出矩阵的一列
例子:
例子:
>> A=[1:6;2:7;3:8;4:9;5:10;6:11]
A(1,:)
A(:,1)
A =
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10
6 7 8 9 10 11
ans =
1 2 3 4 5 6
ans =
1
2
3
4
5
6 A(i,:) 提取矩阵A的第 i行
A(:,i) 提取矩阵A的第 i列
扩展资料:
MATLAB矩阵
矩阵的建立
直接输入法创建:
还可以有复数矩阵的建立,有两种方法:
1、直接按照直接输入法来建立矩阵,但是元素可以直接打成复数的形式(a+bj)
2、还有就是分别建立一个实部还有一个虚部的矩阵,然后通过(a+bj)就可以得到。
参考技术A使用matlab,可以对矩阵直接得到矩阵的一行或者一列,也可以打印出来。
假设已经定义了矩阵A,若提取A的第二行重新组成一个行向量,可以使用A(2,:)进行提取,对于列向量的提取同理。若需要矩阵A的2到6行,3到7列的数据重新组成矩阵,可以使用A(2:6,3:7)进行提取。
若要打印某一行,可以利用fprintf函数进行打印,例如打印矩阵A的第二行,可在命令行输入fprintf('%d',A(2,:))进行打印,也可以替换为%f打印浮点数。
对于列的操作类似,第二列全部可以表示为A(:,2),其余的格式与行操作相似。
扩展资料:
MATLAB的基本数据单位是矩阵,MATLAB中创建矩阵有以下规则:
1、矩阵元素必须在[ ]内;
2、矩阵的同行元素之间用空格或者英文逗号隔开;
3、矩阵的行与行之间用英文分号或回车符隔开;
4、矩阵的元素可以是数值、变量、表达式或函数;
5、矩阵的尺寸不必预先定义。
参考资料:MATLAB文档中心
百度百科——MATLAB
参考技术B假设一个矩阵A
A(1,:) %输出A矩阵的第一行
A(:,1) %输出A矩阵的第一列
A(1:2, 2:3) %输出A矩阵的1到2行,和2到3列之间的数据
矩阵取值前一个坐标代表行,后一个坐标代表列,例如:假设一个矩阵A,A(x, y)代表矩阵A中的第x行第y列元素。
同时,在matlab矩阵中,x : y代表从x到y的所有元素。
因此,当你想要访问某一行的时候,只需要确定行坐标。例如,对于矩阵A,行坐标为x,A的第x行为A(1, :)。
同理,当你想要访问某一列的时候,只需要确定列坐标。例如,对于矩阵A,列坐标为y,A的第y列为A(:, 1)。
扩展资料
MATLAB与矩阵
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
参考资料
百度百科 MATLAB
A(:,1)%输出A矩阵的第一列
A(1:2,2:3)%输出A矩阵的1到2行,和2到3列之间的数据
这样就包含了所有的矩阵切割了,你自己再举一反三就可以了。本回答被提问者和网友采纳 参考技术D clear all;
A=floor(rand(100,100)*100));
A(1,:)
A(:,2)
是不是这个意思?
如何从 MATLAB 中的矩阵创建子矩阵(全部 5*5)?
【中文标题】如何从 MATLAB 中的矩阵创建子矩阵(全部 5*5)?【英文标题】:How to create Sub matrix(all 5*5) from a Matrix in MATLAB? 【发布时间】:2019-01-23 14:42:26 【问题描述】:这可以通过恰好移动一行和一列来完成。我尝试使用以下代码,但没有得到实际输出。这里 A 是输入矩阵。
A=[40 45 50 60 70 80;
10 12 15 17 18 20;
35 41 57 44 98 78;
45 74 11 2 36 78;
12 45 79 85 36 45;
1 5 8 78 47 3]
for i=1:size(A,1)-4
for j=1:size(A,2)-4
Bi,j=A(i:i+4,j:j+4)
end
end
现在我得到了这个输出:
A =
40 45 50 60 70 80
10 12 15 17 18 20
35 41 57 44 98 78
45 74 11 2 36 78
12 45 79 85 36 45
1 5 8 78 47 3
B =
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
B =
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
B =
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[2,1] =
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
[2,2] = [](0x0)
B =
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[2,1] =
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
[2,2] =
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
5 8 78 47 3
但我需要这样的输出:
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
5 8 78 47 3
我必须在我的代码中更改什么?
【问题讨论】:
【参考方案1】:重复显示是由于在B
中保存子矩阵的行中缺少分号。
您期望的输出需要此索引:
Bj,i = A(i:i+4, j:j+4);
然后您可以使用celldisp(B)
来显示单元格。
请在循环前用B=cell(2, 2);
预先分配单元数组
【讨论】:
【参考方案2】:您已经创建了一个矩阵元胞数组,因此B
会按原样显示。
尝试这样做:
A=[40 45 50 60 70 80;
10 12 15 17 18 20;
35 41 57 44 98 78;
45 74 11 2 36 78;
12 45 79 85 36 45;
1 5 8 78 47 3];
for i=1:size(A,1)-4
for j=1:size(A,2)-4
B = A(i:i+4,j:j+4);
disp(B)
end
end
根据您要对每个子矩阵执行的操作,接下来要执行的操作会有所不同。您可以采取的一种方法是将子矩阵保存在具有相关名称的 .mat 文件中,例如:
save(['B_',num2str(i),'_',num2str(j),'.mat'],'B')
(在我的示例中将这一行放在调用 disp
的位置。)
【讨论】:
这是我遇到的错误。使用保存时出错 无法写入文件 B_1_1.mat:权限被拒绝。 newtesting 出错(第 9 行) save(['B_',num2str(i),'',num2str(j),'.mat'],'B') newtesting 使用 save 时出错 无法写入文件 B_1_1。垫子:权限被拒绝。 newtesting 出错(第 9 行) save(['B',num2str(i),'_',num2str(j),'.mat'],'B') 奇数。您是否正在处理具有写入权限的文件夹?尝试使用不同的名称(例如 C_1_1.mat)保存在不同的位置。同时,B 矩阵是否如您所愿出现在控制台上? 是的,B 矩阵出现在控制台中。但是那个错误是存在的。另一件事是我如何使用所有这些 5*5 矩阵?因为我必须使用公式更新所有矩阵值。然后所有更新的 5*5 矩阵应该保存在另一个变量中。 作为一个快速修复,我想到了可怕的 eval 函数。 eval('B_',num2str(i),'_',num2str(j),'= B;') 应该将 B 的每个值归因于名为 B_1_1 的变量,依此类推。然后你就可以把它们都放在你的工作区了。 @ArijitPanigrahi :我刚刚尝试重现您的错误,但我没有想到。错误是否已为您解决?你必须做任何修复吗?以上是关于matlab 直接得到矩阵一列、或者一行的主要内容,如果未能解决你的问题,请参考以下文章
matlab 弄一个空矩阵,如何把输出的数据放到空矩阵里面,谢谢
在matlab中如何将一个矩阵的一行或一列取出来,还是一个矩阵?