Matlab使用動態類型,根據分配給它的變量推斷變量的類型。例如嘗試:
x = [72 69 76 76 79 6]
y = [72 69 76 'L' 79 6]
注意,x
成爲雙打的陣列,而y
成爲字符數組。現在,如果您嘗試設置
x(2) = 'A'
數組x
將保持其類型。但如果你設置
x = [72 'A' 76 76 79 6]
然後x
將改變它的類型爲一個字符數組。如果你想強制一個數組成爲一個char數組,那麼你可以簡單地在整個數組上調用char()
。
x = char([72 69 76 76 79 6])
在你的情況,你可以只調用
s = char(s)
通過你的循環運行後。這將把數組重寫爲chars而不是double。
另外,請注意,您不能在矩陣中混合類型。它看起來像你正在試圖把數字放在第一列和字母在第二列。這在技術上是不允許的。但是,只要您在訪問它時將第二列中的值轉換回char,就不會有問題。例如,
for k=1:n
s(k,:) = [k,'l'];
end
first_number = s(1,1);
first_letter = char(1,2);
基本上會讓您將數字存儲在一列中,並將字母存儲在另一列中。無論何時從矩陣中訪問它,只需確保將字母轉換爲字符。
你也可以考慮使用單元格。例如
n = 26;
s = cell(n,2);
for k=1:n
s{k,1} = k;
s{k,2} = 'l';
end
display(s)
如果你不喜歡Matlab的顯示單元陣列的方式,你仍然可以使用下面的符號
% Pull out individual elements
first_number = s{1,1}
first_letter = s{1,2}
% Pull out the columns as matrices
numbers_as_matrix = cell2mat(s(:,1));
letters_as_matrix = cell2mat(s(:,2));
MATLAB版本解壓陣列的碎片? – nispio
ubuntu上的R2012a – bigTree