[問題] 一段覺得很怪的code已回收
dat為n*k的矩陣
n=length(dat(:,1)); (定義n)
q=dat(:,qi); (定義q)
% Sorted index of q %
qs=0; (第一個迴圈的起始值)
for i=1:length(q) (我覺得這行是多餘的)
for i_=1:length(q) (第一個迴圈開始)
temp=0; (第二個迴圈的起始值)
for j=1:length(q) (第二個迴圈開始)
if (q(i_)>q(j))|(i_>=j&q(i_)==q(j)) (?1)
temp=temp+1; (第二個迴圈的規則)
end; (第二個迴圈結束)
end;
if temp==i (?2)
qs=[qs;i_]; (?3)
end;
end;
end;
qs=qs(2:length(qs)); (?4)
q=q(qs); (?5)
因為本身是matlab新手,不太知道matlab的語法思考模式
也借了一些書來看,但總是無法用在實際的程式語法
若以for的迴圈來看
通常都是
s=1
for i=1:n
a=3
b(s)=3*i
s=s+1
end
而以if來看
a=1
b=5
if (a==4)
b=10
end
b
即可得到b=5
在書上看到for 和 if的迴圈例子似乎無法讓我理解最上面打出來的code
至於
qs=qs(2:length(qs)); (?4)
q=q(qs); (?5)
這兩行我完全無法理解
qs應該是一開始迴圈在定義起始值的qs=0吧
怎麼這裡又把qs定義為qs(2:length(qs))
而且這裡在小括弧( )的前面又放了一個qs,真的蠻怪的
而最後一行q=q(qs)
我也是完全不能接受
我翻遍了中英文的matlab參考書籍
完全找不到有人寫出q=q(qs)這類的表示方法
所以我不能理解這段到底可以產生什麼樣的結果
這些問題我大概困擾了一個月
因為翻書都翻不到
也找不到人可以詢問
感謝有前輩可以解答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.153.12
推
05/20 14:32, , 1F
05/20 14:32, 1F
→
05/20 14:32, , 2F
05/20 14:32, 2F
→
05/20 14:33, , 3F
05/20 14:33, 3F
→
05/20 14:34, , 4F
05/20 14:34, 4F
→
05/22 08:10, , 5F
05/22 08:10, 5F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):