工作區中存在具有不同向量長度的向量。我有一個包含向量名稱的字符串單元格。我想用cellfun來吐出這些向量的長度。將名稱存儲在單元格中的向量長度比較
例如,
t1 = 1x10 double
t2 = 1x100 double
t3 = 1x20 double
cel = {'t1','t2','t3'};
cellfun(@(c) eval(['length(',c{:},')']),cel)
我以爲做以下將做的工作,但事實並非如此。我有理由爲什麼我需要使用cellfun和eval來解決這個問題。
有人可以指出有什麼問題嗎?我得到的錯誤消息是:
cellfun(@(c) eval(['length(',c{:},')']),cel)
Cell contents reference from a non-cell array object.
cellfun(@(c) eval(['length(',c(:),')']),cel)
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
cellfun(@(c) eval(['length(',[c{:}],')']),yvar)
Cell contents reference from a non-cell array object.
取決於我試過的變化。
或更好。最終目標是檢查所有矢量的長度是否相同。如果有一種方法可以不循環,那就太棒了。
這看起來像一個很好的理由來改變你的代碼,所以你不需要'eval'。另外,'cellfun'是一個循環,並且幾乎總是比顯式循環慢,所以你不會真的在那裏保存任何東西。 – excaza
非常感謝您提供的信息。 – Eric