3

Matlab でセル配列のセル配列を作成しようとしています。私が現在持っているコードは、必要に応じて正確に機能します。問題は基本的に、最初、中間、または最後ではない行をコメントアウトすると、エラーが発生することです。

==> vertcat CAT 引数の使用時のエラー 次元が一貫していません。

私はこれをしばらく調査してきましたが、まったく同じ問題を抱えている別の人を見つけました...

http://www.programmersheaven.com/mb/ctocplusplustomatlab/424275/424275/mysterious-reason-for-cat-error-when-defining-cell-array/

...しかし、この投稿には解決策がありません。

これが私のコードです(4は変数が保持する可能な整数値を表します):

cell = {{4} ...
    {4} ...
    {4} ...
    {4} ...
    {} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4 4 4 4} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4 4 4 4} ...
    {5} ...
    {} ...
    {4} ...
    {4} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    };

(ここでまったく同じように見せることはできません...すべての楕円の後、コードは私のバージョンの新しい行に移動します)

5 が含まれる行をコメントアウトしたとしましょう。常に連結エラーを返します。なぜこれが起こっているのですか?

前もって感謝します、

ニコル

4

2 に答える 2

2

Matlab は、コメント行を新しい行として解釈しています。セルの間に空白行を入れてみると、同じエラーが表示されるはずです。各セルの後にセミコロンを置くと、エラーを回避できます。

于 2012-06-21T18:38:03.843 に答える
2

より小さな例を次に示します。

c = {...
    {1}... % you can comment out this line
    {2}... % error when commenting this line
    {3}... % you can comment this line (will make a 2-by-2 array)
    {4}... % error when commenting this line
    {5}... % you can comment out this line
    }

コメント行は、Matlab によって空行と見なされます。連結する場合、1 つ (または複数) の空の行はセミコロンに相当し、新しい行の開始を示します。

その結果、

c = {{1} {2}

     {3} {4}}

結果は 2 行 2 列の配列になり、次と同等です。

c = {{1},{2};{3},{4}}

各行の後にセミコロンを置く場合

c = {...
    {1};... 
    {2};... 
    {3};... 
    {4};...
    {5};... 
    }

コメントアウトされた行はすべてセミコロンと同等であり、複数のセミコロンが有効であるため (c = {{1};;{2};}動作)、任意の数の行をコメントアウトできるようになりました。

出力は配列ではn-by-1なく になり、組み込み関数の名前であるため、それを呼び出すべきではないことに注意してください。1-by-ncell

于 2012-06-21T18:54:37.877 に答える