我已經在Matlab中設計了一個while循環來完成特定的任務。首先,我正在導入excel電子表格的幾列標題。雖然Matlab中的循環不會比較字符串
'student #' ' assn1' ' assn2' ' assn3' ' assn4' ' assn5' ' lab1' ' lab2' ' lab3' ' lab4' ' midterm' ' final exam'
這些存儲在一個名爲'txt'的矩陣中。雖然我的計數器變量'i'尚未達到等於'txt'大小的數值,請輸入循環。我將矢量的當前值存儲在變量j中。如果此值的前4個字母等於「assn」,則將assignCounter增加1.如果不是,則不執行任何操作。然後,在退出循環之前,將計數器變量'i'加1。理想情況下,該程序應該告訴我一個assn在矩陣'txt'中出現了多少次。但是,我的最終結果是assignCounter是0.我不知道該怎麼做。任何幫助將不勝感激,謝謝! 代碼:
%Assignment 4
clear;
clc;
filename = 'marksdata.xlsx';
[num, txt, raw] = xlsread(filename);
%Loop through the categories
assignmentCounter = 0;
categorySize = size(txt);
i = 1;
loopCount = 0;
while i < categorySize
j = txt(i, categorySize);
if strncmpi('assn',j, 4)
assignmentCounter = assignmentCounter + 1;
end
i = i + 1;
end
一件事就是size()返回一個矢量[rows,cols]。取決於你希望'categorySize'是'txt'中的行數還是列數,你應該分別使用'[categorySize,〜] = size(txt)'或'[〜,categorySize] = size(txt)' 。 –
你應該真的學會在Matlab中使用調試器。只需設置一個斷點,然後您就可以看到變量的值。這將幫助您快速調試此類問題。 – zelanix
另外,您問題頂部的示例字符串包含前導空格。你的實際數據是這種情況嗎?如果是,那麼它應該很明顯,爲什麼將前4個字符與'assn''比較將不會匹配任何內容。 – zelanix