matlab中如何给一个矩阵中的某几个特定位置赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中如何给一个矩阵中的某几个特定位置赋值相关的知识,希望对你有一定的参考价值。
比如说我有一个矩阵:a = zeros(5);
还有两列向量:i = [2;3;4]; j = [1;4;2];
想使得a(i(k),j(k))=1,也就是说让a的第2行第1列、第3行第4列、第4行第2列这三个位置上的元素等于1。
不用循环,也不通过转稀疏矩阵,最好只用一条语句来实现。
用sub2ind
>> a=zeros(5); i = [2;3;4]; j = [1;4;2];
>> a(sub2ind(size(a), i, j))=1
a =
0 0 0 0 0
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
0 0 0 0 0
扩展资料:
注意事项
MATLAB书写表达式的规则与“手写算式”差不多相同。
如果一个指令过长可以在结尾加上...(代表此行指 令与下一行连续),例如
?3*...
6
ans =
18
在matlab中,可通过如下方式给矩阵赋值:
a = zeros(3,4); % 初始化一个3*4的矩阵
>>a =
0 0 0 0
0 0 0 0
0 0 0 0
a(1,2) = 5; % 将矩阵a的第1行第2列个元素赋值为5>>a =
0 5 0 0
0 0 0 0
0 0 0 0a(2) = 6; % 将矩阵a的第2个元素(按列开始计算)赋值为6
>>a =
0 5 0 0
6 0 0 0
0 0 0 0a(3,:) = [1 2 3 4]; % 将矩阵a的第3行赋值为[1 2 3 4]
>>a =
0 5 0 0
6 0 0 0
1 2 3 4参考技术A 用sub2ind
>> a=zeros(5); i = [2;3;4]; j = [1;4;2];
>> a(sub2ind(size(a), i, j))=1
a =
0 0 0 0 0
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
0 0 0 0 0
hokvens: 这个正是matlab的精髓,matlab里面很多东西都不需要循环来完成,速度快而且语句简单本回答被提问者采纳 参考技术B 比如:
k1=[1,2;3,4];
K=zeros(4);
把k1的值赋在K的特定位置后,获得
K=[0,1,0,2;
0,0,0,0;
0,3,0,4;
0,0,0,0;]
K([1 3],[2 4]) = k1 参考技术C 直接赋值不行吗?
a(2,1)=1;a(3,4)=1;a(4,2)=1; 参考技术D 用sub2ind
>>a=zeros(5);i=[2;3;4];j=[1;4;2];
>>a(sub2ind(size(a),i,j))=1
a=
00000
10000
00010
01000
00000
hokvens:这个正是matlab的精髓,matlab里面很多东西都不需要循环来完成,速度快而且语句简单
matlab 二维矩阵for循环逐行赋值
刚开始用matlab编程,请教大神们两个问题
1 二维矩阵如何赋值呢?方便的话请示例,我创建零矩阵利用for循环赋值后,总是只能赋第一行的值,其他为零 = = 要不就是所有的值逐行能赋值进去,但是到后面使用这个赋值后的矩阵之后,就又变成零矩阵的值了。
2 另外for循环里面,可否出现a=a+5或者a=+5这样进行迭代的式子?我这样做之后a的累加还是不成功。
谢谢各位!感激不尽
1、首先在电脑上打开matlab,如下图所示。
2、可以通过zeros函数进行赋值,输入a=zeros(2,3),生成了一个全0矩阵,如下图所示。
3、可以直接使用a(1,3)=5方式进行矩阵赋值,a矩阵第1行第3列赋值成5了,如下图所示。
4、使用 a(3)=8方式进行赋值,矩阵第3个元素赋值为8,从列开始往下数,如下图所示。
5、使用a(1,:)=[1 1 1]方式对矩阵一行进行赋值。
6、最后通过[m,n]=size(a);for i=1:m;for j=1:n;a(i,j)=5endend可以对矩阵每一个元素进行赋值,如下图所示。
参考技术A1、双击工作区的需要更改的矩阵。
2、然后在弹出的表格中选中需要更改的单个矩阵元素,进行更改即可。
3、也可以通过语句来实现对矩阵单个元素的赋值操作。我们可以通过下面的语句:a(1,2)=100。
4、输入a(5,6)=100,来看看结果。
5、可以看到矩阵会自动扩展成5行6列的一个新的矩阵,其余为赋值的区域会自动为0,我们也可以通过这个方法来对矩阵进行扩展。
参考技术BMATLAB二维矩阵赋值和C语言相仿,除了以下几点差别:
下标从1开始而不是0;
索引使用(i,j)而不是[i][j];
可以一个语句对多个元素(包括整个矩阵)同时赋值。
你说的只能给第一行赋值肯定是谢的代码有错,以下是一个简单的例子:
A=zeros(5,4);for r=1:5, for c=1:4,A(r,c)=r*10+c;end, end
你可以对照一下,看问题出在哪里。
for循环可以有a=a+5这样的语句,但不能有a+=5,因+=不是MATLAB的操作符。但是要注意,MATLAB 的for循环是基于索引的,这意味着,假如你的循环是for a=...的表达式,你不可能像C语言里那样通过再循环体内部修改a的值去改变循环的次数。
以上是关于matlab中如何给一个矩阵中的某几个特定位置赋值的主要内容,如果未能解决你的问题,请参考以下文章