0
在任何人問起之前,這是前一個問題的轉貼,但我不能刪除它,因爲它有答案,所以我正在修改它,以便Daniel R有希望回答它!在矩陣中使用strfind在矩陣中的不同對角線方向
我有一個數字網格,我想在8個方向中的任何一個方向上讀strfind
的一串數字。非對角線的我已經設法正常工作,這是我一直在努力的對角線(除了丹尼爾R早些時候幫助我的downRight
,我非常感謝)!
下面是代碼:
A = [5,16,18,4,9;
9,10,14,3,18;
2,7,9,11,21;
3,7,2,19,22;
4,9,10,13,8]
for r = 1:5
for diags = -5:5
downRight = strfind(diag(A,diags)', [10,9,19]);
if isempty(downRight) == 0;
rowOfFirstNum = downRight(1)+max(-diags,0);
columnOfFirstNum = downRight(1)+max(diags,0);
end
downLeft = strfind(diag(rot90(A),diags)', [11,2,9]);
if isempty(downLeft) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
upLeft = strfind(diag(rot90(A,2),diags)', [19,9,10]);
if isempty(upLeft) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
upRight = strfind(diag(rot90(A,3),diags)', [3,7,14,4]);
if isempty(upRight) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
end
end
downRight
的作品,但我不知道如何獲得別人的正常工作。需要注意的是,爲了測試每個方向,其他3個需要註釋掉。
謝謝。
謝謝。雖然抱歉,還有一個問題。我之前編寫它的方式允許我爲每個方向分別計算rowOfLastNum和columnOfLastNum(我希望名稱是自解釋的),因爲它是行/列的增加或減少的組合。我如何用通用代碼實現這一點? – user3094936
我添加了一個空的開關箱表達式。使用與此相似的內容來添加特定於某個方向的代碼。 – Daniel
非常感謝您的幫助,我非常感謝。我可以再問你一件事嗎?這個詞搜索是從圖像中讀取的(整數是字母位置),因此使用分類器對每個字母進行分類。分類器效率很高(大約95%),但是這意味着在整個文字搜索中大約有10個字母是錯誤的。我有一個函數可以計算任意兩個單詞之間的編輯距離。有沒有一種方法可以用它來確定一個單詞在某些字母被誤分類時的位置? – user3094936