1

Octave で次の関数をメッシュ化しようとしています。

  function C = istep(x)
      A = x < 0.75
      B = x > 0.25
      C = A & B
  endfunction

  D = rand(10);
  mesh(istep(D));

入力として 10x10 (ランダム) マトリックスを使用します。ただし、メッシュ関数は失敗して起動します

invalid value for array property "zdata"

注: Meshing D 自体は問題なく動作します。関数 istep は、期待値を含む 10x10 の「行列」も返します。エラーは、出力の内部形式が行列としてではなく、データの「配列」またはより抽象的なものとして扱われているという事実にあると思われます。ただし、それを変更する方法がわかりません。

また、出力に eye(size(D)) を掛けると問題が解決し、行列をプロットできます(出力が自動的に行列にキャストされると思われます)。ただし、これはあまりエレガントではなく、可能であれば避けたいと思います。

編集: spy() は eye() による乗算を必要とせずに、出力で直接正常に動作します

質問:行列 istep(D) をプロットできるようにするには、コードの何を変更すればよいですか?

4

1 に答える 1

2

関数の出力は論理値を返します。したがって、次の手順を実行してください。

  mesh(double(istep(D)));
于 2013-09-17T16:39:31.103 に答える