2013-03-13 27 views
2

我非常瞭解如何預先分配使用1,零和單元格命令的矩陣大小,但字符串又如何呢?在Matlab中預先分配字符串大小

假設我有一個名爲矩陣其data每個值是1-255之間,如果現在我要改爲打印數字的這些數字的ASCII字符它的自我,我會做到這一點,

msg=''; 

    for i = 1 : length(data) 
     msg=horzcat(msg,floor(data(i))); % horzcat doesn't ignore spaces 
    end 

msg 

上面的代碼Matlab在循環結束之前並不知道msg的大小,我真正想要做的是在循環開始之前聲明變量msg的大小。

我該怎麼做?

+2

Matlab中的字符串只是一個行向量。這有幫助嗎? – 2013-03-13 23:33:34

回答

4

您可以使用char預分配一個字符串,就像你的矩陣(一個字符串就是一個字符數組):

msg = char(zeros(100,1)); 

然而,這可能是你需要的不是(我還沒有看到任何人預先分配一個字符串的任何東西)。鑑於這是你想要做什麼

假設我有一個名爲矩陣數據,其每個值是1-255之間,如果現在我要改爲打印數字的這些數字的ASCII字符它自我

您可以簡單地使用char(data)來顯示ASCII/Unicode值。

+0

我試過這個,但它填充不必要的0之前顯示爲空格的字符串,這是因爲循環不覆蓋原始矢量值它是填充消息到該矢量 – 2013-03-13 23:51:21

+0

你說你還沒有看到任何人預先分配的字符串我也沒有。但Matlab R2011b不斷給我發出警告,預先分配其大小。我知道它不值得,但我只是想刪除這個警告 – 2013-03-13 23:56:50

+0

@Xufyan正如我所說,這可能不是你所需要的,但我回答了你問的問題,即:「如何在MATLAB中預先分配字符串」。我不完全知道你想做什麼,因爲你的代碼樣本不清晰,所以我按照你在文中說的去做。按照我的建議,你是否嘗試過使用char(data)?這就是你在'horzcat'行中使用'msg'的一個最好的解釋(它一次增加一個char字符串)。如果你在'data'中有浮點數而不是整數,那麼'char(floor(data))'。 – abcd 2013-03-14 00:17:00

相關問題