当前位置:编程学习 > Matlab >>

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在曲线拟合时出现:未找到指定模块,这是怎么回事呢?求高手回答!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,