SETUP Win7的64B,R2015b,16 GB的RAM,CPU i7-2700MATLAB:壓倒一切的表()方法
的table()
是fundamental Matlab class這也是密封,因此我不能子類它。
我要修復這個類的一些方法和增加新的的。例如,table.disp()
基本上被破壞,例如,請嘗試NOT disp(table(rand(1e7,1)))
,或在命令窗口中忘記;
。該變量在RAM中只佔76 MB,但顯示器無緩衝,並且會導致系統失速!
- 我可以覆蓋方法,如
table.disp()
沒有寫入到matlabroot\toolbox\matlab\datatypes\@table
? 我可以擴展表類用
C:\MATLAB\@table\ismatrixlike.m
下的新方法嗎?爲什麼我得到ismatrixlike(table) Undefined function 'ismatrixlike' for input arguments of type 'table'.
很顯然,我沒有
addpath C:\MATLAB\ rehash toolboxcache
我也試過
clear all
。該路徑具有(字母)優先於
matlabroot
,但缺少table.m
類定義。如果我將本地課程補習添加到C:\MATLAB\@table
,那麼我可以運行我的新補習方法(在clear all
之後)。但是:>> methods(table) Methods for class table: classVarNames ismatrixlike table varfun convertColumn renameVarNames unstack
只列出了新
\@table
文件夾的方法,即使(某些)的老方法仍然可以工作,例如size(table)
這部分地解決了這個問題,因爲現在,本地
\@table\private
文件夾不能訪問了,因此許多本地方法被打破!
我爲什麼要這樣做?因爲我不想在table()
修好之前再等兩年。我已經失去了整整一天,因爲我在命令窗口中簡單地忘記了;
,並且如果它正在運行多天模擬,我無法強制在我的電腦上重新啓動,但是我必須等待磁盤交換結束:(。。
附錄 更多方面有關disp(table(rand(1e7,1)))
這是當我打它會發生什麼(幸運的是我不夠快,CTRL-C出來的)。
罪魁禍首是線的table.disp()
172將數字數組轉換爲一個單元格字符串(使用填充也是!):
[cells, err, isLeft] = sprintfc(f, x, b);
讓Matlab做任何已經在工具箱中不存在的東西......保證疼痛。放棄所有希望,誰進入這裏! – hoosierEE
請注意'istable'不是表類的方法,而是它自己的函數,它調用'isa(t,'table')'。 – Suever
@Suever感謝您注意到這一點。我會將它改爲'table.size()' – Oleg