newyear2012 发表于 2012-10-2 15:52

大神们来帮帮我啊!

A=


这个矩阵里  我想提取每列 从上到下 第一个等于1的元素的坐标。  即第一列有三个1  但是我要第一个1的坐标  即是(2,1)  求大神们能帮我编一个小程序解决   因为这样的矩阵倒是可以数出来   但是对于1000*1000的矩阵就不知道该怎么办了  谢谢了

Vir 发表于 2012-10-2 16:58

本帖最后由 Vir 于 2012-10-2 17:00 编辑

随手编了一个,目测满足你的需求,有BUG再告诉我哈

A=

mn=size(A);
B=zeros(mn(2),2);

num=0;
for i=1:mn(2)
    for j=1:mn(1)
        if(A(j,i)==1)
            num=num+1;
            B(num,1)=j;
            B(num,2)=i;
            break;
        end
    end
end

B
num


kong1234 发表于 2012-10-2 18:09

{:soso_e100:}        楼上对的

Vir 发表于 2012-10-2 19:02

kong1234 发表于 2012-10-2 18:09 static/image/common/back.gif
楼上对的

谢谢支持瓦~~~~~~

kong1234 发表于 2012-10-2 19:14

num =

     6
B =

     2     1
     3     2
     3     3
     4     4
     4     5
     5     6

kong1234 发表于 2012-10-2 19:15

不过这个也太简单了吧

Vir 发表于 2012-10-2 19:24

是瓦 ,希望大家认真学MATLAB  数学建模很大程度上学的有用的就是编程环节瓦

wangluzhu 发表于 2012-10-2 19:25

Vir 发表于 2012-10-2 19:24 static/image/common/back.gif
是瓦 ,希望大家认真学MATLAB  数学建模很大程度上学的有用的就是编程环节瓦

据老师说MATLAB中循环的利用会导致效率很低下(但是我经常用……)您怎么看?

Vir 发表于 2012-10-2 19:54

wangluzhu 发表于 2012-10-2 19:25 static/image/common/back.gif
据老师说MATLAB中循环的利用会导致效率很低下(但是我经常用……)您怎么看?

尽量用内置的运算符,比如矩阵的自然运算。

比如 某行和另一行的倍数之类的 运算 ,就不用循环。

但是当循环变得无法避免,或者不用循环就要用更加复杂的数学逻辑,就没必要,用循环是最好的

-.|.低﹎ 发表于 2012-10-4 09:44

顶....{:soso_e113:}
页: [1] 2
查看完整版本: 大神们来帮帮我啊!