2017-04-25 57 views
1

動態內存分配我有兩個問題:在MATLAB

  1. 什麼是MATLAB相當於çrealloc()? 那就是reshape()
  2. 我該如何初始化一個MALTAB向量,可用於增量添加對象/結構類型的新元素?

例如,my_vector = zeros(1, N)不能用於對象/結構體的情況下,對吧?

回答

1

在MATLAB內存分配是自動完成的。即,自動地將元素添加到載體的realloc

x = [ 1 2 3 ]; 
x(4) = 4; % performs realloc 
% now x == [1 2 3 4] 

x(2) = []; % deletes element 2 
% now x == [1 3 4] 

要創建對象的數組我在過去使用repmat執行。由於一般情況下的對象需要從一些數據構建,所以我發現複製通常是最好的,如果沒有關於類的其他信息。要創建CLS類的默認構造的對象的2x3x4數組,使用

x = repmat(CLS(), [ 2 3 4]) 

我發現了這個更合適的比寫

x = CLS(); 
x(2,3,4) = CLS(); 

這或許也將工作,但讀起來拗口及很可能可能有細微的錯誤,如果類沒有正確實施。

struct s時,可以還創建與repmat,或,可選地,通過提供單元陣列到struct構造函數,例如,

x = struct('a', { 1 2 3}, 'b', { 5 6 7}); 
% now x is a 1x3 struct array