24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1404  |  回复: 10

minstrel

木虫 (正式写手)

道法自然

[交流] 【求助】如何使 矩阵行或者列的和为1【已解决】已有3人参与

比如矩阵[2 2, 2 2],
转化后为[0.5 0.5, 0.5 0.5].

我写了个循环去计算,
太麻烦了。
不知道是否有这样的函数去处理呢?



sumCol=zeros(1, nm);%save the sum of column

for i=1:nm
    for j=1:nm
        sumCol(i)=sumCol(i)+MA(j,i);
    end
end

for i=1:nm
    for j=1:nm
        PA(i,j) = MA(i,j)/sumCol(j);
    end
end

[ Last edited by nono2009 on 2010-6-25 at 06:52 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


minstrel(金币+1):谢谢参与
引用回帖:
Originally posted by minstrel at 2010-06-21 22:34:02:
比如矩阵[2 2, 2 2],
转化后为[0.5 0.5, 0.5 0.5].

我写了个循环去计算,
太麻烦了。
不知道是否有这样的函数去处理呢?



sumCol=zeros(1, nm);%save the sum of column

for i=1:nm
    for j=1 ...

你的意思是归一化?
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
2楼2010-06-21 23:08:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然

nono2009:建议“引用回复该帖”,以便别人及时收到你的信息。 2010-06-22 07:46:10
归一化应该是指行最大值为1 最小值为0
而我想要的是让行的和为1
3楼2010-06-21 23:25:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

photons

至尊木虫 (职业作家)

★ ★ ★
minstrel(金币+1):谢谢参与
nono2009(金币+1):鼓励应助。欢迎常来仿真模拟版。 2010-06-22 14:01:16
zzuwangshilei(金币+1):多谢应助,帖子有点乱码,还望改一下 2010-06-22 19:44:02
minstrel(金币+8):谢谢你哈。热心而且厉害. 2010-06-23 06:11:15
不懂楼主的意思!

要使行和为,
不是很简单的事情么?

举个例子:
syms a b c d e f g h A B C D E F G H real;
test=[a,b,c,d;e,f,g,h;A B C D;E F G H];
TA=test';
s=sum(TA);
ttest=[test(1,/s(1);test(2,/s(2);test(3,/s(3);test(4,/s(4)]; %你要的
tttest=sum(ttest');
tttest =

[ 1, 1, 1, 1]

[ Last edited by photons on 2010-6-22 at 12:07 ]
希望多多认识些科研达人!
4楼2010-06-22 11:19:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然

引用回帖:
Originally posted by photons at 2010-06-22 11:19:24:
不懂楼主的意思!

要使行和为,
不是很简单的事情么?

举个例子:
syms a b c d e f g h A B C D E F G H real;
test=[a,b,c,d;e,f,g,h;A B C D;E F G H];
TA=test';
s=sum(TA);
ttest=[test(1,/s( ...

没能太看懂你的意思
能稍微改下吗?


举个例子:
有一个一维度矩阵 [ 1 2 4 1 2],想要得到矩阵  [0.1 0.2 0.4 0.1 0.2]。
目标的矩阵,我们可以通过求原矩阵的和,再将原矩阵中每个元素都除和,就能够得到。

我想问的是,matlab里面是否有很简单的函数,来做到这些。
而不用先求和,再循环求出来呢?
5楼2010-06-23 02:18:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

photons

至尊木虫 (职业作家)

啊?\

看不懂我发的东西?晕死!

楼主为什么老是想着循环呢?

MATLAB最忌讳用循环了!能不用最好不用!

我写的就是让矩阵的每行和都为1啊!

a=reshape(1:12,3,4);
s=sum(a');
aa=[a(1,./s(1);a(2,./s(2);a(3,./s(3)]

你运行一下看看 a 与aa的关系就知道了!

那个笑脸是:后一个),系统把:   )默认了笑脸。

[ Last edited by photons on 2010-6-23 at 04:09 ]
希望多多认识些科研达人!
6楼2010-06-23 03:58:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然

引用回帖:
Originally posted by photons at 2010-06-23 03:58:22:
啊?\

看不懂我发的东西?晕死!

楼主为什么老是想着循环呢?

MATLAB最忌讳用循环了!能不用最好不用!

我写的就是让矩阵的每行和都为1啊!

a=reshape(1:12,3,4);
s=sum(a');
aa=[a(1,./s(1);a ...

我把笑脸 用 : )替代就看到了
而且运行成功了。

是我要的。多谢楼主哈...

还剩下一个问题,还要继续骚扰photons 哈哈
就是最后一步中,你是通过一行一行的计算的。
能有方法再让它简洁点不。因为在我的代码中,矩阵的行数是非常大的,要是一个个去写,太

我试着用aa=a./s;代替最后一句。它跑不过去...
7楼2010-06-23 06:10:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

photons

至尊木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1):鼓励耐心应助。 2010-06-23 10:36:19
很简单啦,用个循环啊!

clear all;
format rat;
a=reshape(1:12,3,4);
s=sum(a');
for k=1:3;
b(k,=a(k,/s(k);
end;
b
希望多多认识些科研达人!
8楼2010-06-23 10:23:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

minstrel

木虫 (正式写手)

道法自然

引用回帖:
Originally posted by photons at 2010-06-23 10:23:40:
很简单啦,用个循环啊!

clear all;
format rat;
a=reshape(1:12,3,4);
s=sum(a');
for k=1:3;
b(k,=a(k,/s(k);
end;
b

这个行。
谢谢photons, 多谢。

再请教下,如果连这个循环都不想用,会不会有更简洁的方法呢
9楼2010-06-24 00:51:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

photons

至尊木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
adu886886(金币+1):鼓励应助!欢迎常来仿真模拟板块! 2010-06-24 08:41:41
晕死!很简单啦!

clear all;
format rat;
a=reshape(1:12,3,4);
s=sum(a');
ss=repmat(s,4,1)';
b=a./ss
希望多多认识些科研达人!
10楼2010-06-24 08:17:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 minstrel 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见