[討論] 數列排序與比較問題
各位前輩好,我是matlab的初學者
假設現在有一個長度為1000的數列由1和0組成「100101101100011.....」
我想要把這個數列整理成「101010101010101010.....」
目前我嘗試的方法是將數列a(ii+1)和a(ii)比較
若a(ii+1) == a(ii)且a(ii) = 1時,a(ii+1) = 0
a(ii) = 0時,a(ii+1) = 1
若a(ii+1)不等於a(ii),則數值不變
比較的方法,我是以一個for迴圈來判斷數值前後的差別
我的寫法如下
-------------------------------
function mode_org = SO(temp)
filename = ['mode_' num2str(temp) '_K.txt'];
filepath = sprintf(filename);
fidw = fopen(filepath, 'w+');
filename2 = ['mode_' num2str(temp+1) '_K.txt'];
if temp == 205
mode_org = textread('random_org.txt','%f');
elseif temp < 205
mode_org = textread(filename2, '%f');
end
A = rand(1);
Prob_T = tanh(1.4*sqrt((205/temp)-1));
mode_org(1) = 1;
for ii = 1:1000
if mode_org(ii+1) == mode_org(ii)
%------------------------------------------
if A <= Prob_T && mode_org(ii) == 1;
mode_org(ii+1) = 0;
elseif A <= Prob_T && mode_org(ii) ==0;
mode_org(ii+1) = 1;
end
%------------------------------------------
else
mode_org(ii+1) = mode_org(ii+1);
end
fprintf(fidw, '%.6f\r\n', mode_org(ii));
end
fclose(fidw);
end
-------------------------------
這邊讀取的txt檔是一個由1和0構成的隨機數列(共1000個數字)
這個寫法執行後會出現錯誤訊息
index out of bounds because numel(a)=1000
我想應該是在ii = 1000時,找不到a(1001)所以無法執行
除了刻意把讀入的txt檔多加個一數值外,目前我還想不到解法...
不過因為計算需要,不可以多加入一個數值給a數列
想請教該如何解決這個問題
感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 130.126.255.51
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1522556216.A.966.html
推
04/01 14:56,
6年前
, 1F
04/01 14:56, 1F
→
04/01 14:56,
6年前
, 2F
04/01 14:56, 2F
推
04/01 15:00,
6年前
, 3F
04/01 15:00, 3F
不好意思沒寫清楚,我更新了上面程式碼的部分
我想做的事情是把「100101010...」這個隨機的數列逐漸變成「1010101010....」
控制的方法是用一個隨temp變化的函數Prob_T
然後將「100101010...」這個數列隨著temp逐漸變小最終趨向「1010101010....」
我的作法是把最開始的數列的a(ii+1)和a(ii)比較,若a(ii+1)跟a(ii)不同則變化
然後輸出成一個新的txt檔,再重新對著個txt檔做一樣的事,輸出下一個檔案
ii設999僅能執行一次,後面的檔案似乎需要一次減少一個數值才能繼續
不曉得該如何解決
感謝前輩幫忙解惑
※ 編輯: mibmibx (130.126.255.51), 04/01/2018 20:30:47
→
04/01 20:56,
6年前
, 4F
04/01 20:56, 4F
→
04/01 20:57,
6年前
, 5F
04/01 20:57, 5F
推
04/02 12:43,
6年前
, 6F
04/02 12:43, 6F
→
04/02 12:43,
6年前
, 7F
04/02 12:43, 7F
→
04/02 12:44,
6年前
, 8F
04/02 12:44, 8F
→
04/02 23:00,
6年前
, 9F
04/02 23:00, 9F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章