MATLAB 如何把矩阵中第一行的所有数字1 替换成一个数,第二行的1替换成另一个数,第三行第四行同上一样变
例如
1 -1 0 0 0 0 0 0
0 1 -1 0 0 0 0 0
0 0 1 -1 0 0 0 0
0 0 0 1 -1 0 0 0
0 0 0 0 1 -1 0 0
0 0 0 0 0 1 -1 0
0 0 0 0 0 0 1 -1
0 0 0 0 0 0 0 1
中的1和-1的第一行中的数变成0.0968 第二行的数变成0.1200第三行变成0.1667
以此类推变到第八行 后面数分别为: 0.1250 0.1250 0.1250 1.5001 0.2500
追问:我做出来了。。只有这么复杂的方式么?写到.m文件了好繁琐 啊。。
答案:a
a =
1 -1 0 0 0 0 0 0
0 1 -1 0 0 0 0 0
0 0 1 -1 0 0 0 0
0 0 0 1 -1 0 0 0
0 0 0 0 1 -1 0 0
0 0 0 0 0 1 -1 0
0 0 0 0 0 0 1 -1
0 0 0 0 0 0 0 1
>> b
b =
0.0968 0.1200 0.1667 0.1250 0.1250 0.1250 1.5001 0.2500
>> [indRow,indCol] = find(a==1);
>> for irow = 1:length(indRow)
a(indRow(irow),indCol(irow))=b(indRow(irow));
end
>> a
a =
0.0968 -1.0000 0 0 0 0 0 0
0 0.1200 -1.0000 0 0 0 0 0
0 0 0.1667 -1.0000 0 0 0 0
0 0 0 0.1250 -1.0000 0 0 0
0 0 0 0 0.1250 -1.0000 0 0
0 0 0 0 0 0.1250 -1.0000 0
0 0 0 0 0 0 1.5001 -1.0000
0 0 0 0 0 0 0 0.2500
其他:eval和num2str 两个函数可以
具体请看help eval里面的例子看看
上一个:如何用MATLAB画出x y z=0的图
下一个:matlab r2010b在曲线拟合时出现:未找到指定模块,这是怎么回事呢?求高手回答!