ベクトルの長さが異なる作業領域のベクトルがあります。私はベクトル名を含む文字列セルを持っています。私はこれらのベクトルの長さを吐き出すために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