24小时热门版块排行榜    

查看: 878  |  回复: 5

403074

新虫 (初入文坛)

[求助] 新手,求解释一段算法的意义

function y=funa(a)
a=[1;2;3];
[m,n]=size(a)
if m==n&det(a)~=0,k=1;
else,k=2;
end
switch k
case 1
   for i=1:n,ak=a(1:i,1:i);
      dak=det(ak);
      y(i)=dak;
   end
case 2
   y=rank(a);
otherwise
   disp('singular matrix')
   end
我想知道这段算法具体是用来干什么的,最好原理也讲一讲!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dz5172003

金虫 (小有名气)

【答案】应助回帖

这里面的a没什么意义啊,if m==n&det(a)~=0,k=1;这个判断也没什么意义啊?这个函数是自己写的么?
虫虫
2楼2011-10-31 22:04:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

403074

新虫 (初入文坛)

老师给的,主要是
for i=1:n,ak=a(1:i,1:i);
       dak=det(ak);
       y(i)=dak;
这段没看懂,不知道ak=a(1:i,1:i)是什么意思
3楼2011-10-31 22:07:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dz5172003

金虫 (小有名气)

【答案】应助回帖

403074(金币+3): 谢谢 2011-11-01 00:14:45
引用回帖:
1楼: Originally posted by 403074 at 2011-10-31 19:13:50:
function y=funa(a)
a=[1;2;3];
[m,n]=size(a)
if m==n&det(a)~=0,k=1;
else,k=2;
end
switch k
case 1
   for i=1:n,ak=a(1:i,1:i);
      dak=det(ak);
      y(i)=dak;
   end
case 2
   y=r ...

这里a=[1;2;3];a作为参数就没什么意义了,在函数里直接赋值;[m,n]=size(a)=》m=3,n=1
;if m==n&det(a)~=0,k=1;else,k=2;
=>k=2

switch k
直接执行case 2
虫虫
4楼2011-10-31 22:42:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

afgh2587849

木虫 (小有名气)


mze04532(金币+1): 欢迎研讨~ 2011-11-02 08:16:02
程序有点小问题
第一个if用来判断是否是非奇异矩阵,如果是的话k=1, 然后计算矩阵的1阶,2阶,3阶对角子式的行列式的值。
如果是奇异矩阵的话,k=2, 返回矩阵的秩,后面那个otherwise无论如何都用不到的,应该把disp();放到case2中
5楼2011-11-02 05:22:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
5楼: Originally posted by afgh2587849 at 2011-11-02 05:22:07:
程序有点小问题
第一个if用来判断是否是非奇异矩阵,如果是的话k=1, 然后计算矩阵的1阶,2阶,3阶对角子式的行列式的值。
如果是奇异矩阵的话,k=2, 返回矩阵的秩,后面那个otherwise无论如何都用不到的,应该 ...

赞!
6楼2011-11-02 19:09:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 403074 的主题更新
信息提示
请填处理意见