0

編集テキスト ゾーンにデータを入力すると、特定のグラフをプロットする GUI を Matlab で作成しようとしています。私の問題は、このコードを使用してグラフをプロットしようとするときです:

  function pushbutton3_Callback(hObject, eventdata, handles)
  a = str2num(get(handles.edit1,'string'));
  b = str2num(get(handles.edit2,'string'));
  n1 = str2num(get(handles.edit6,'string'));
  n2 = str2num(get(handles.edit4,'string'));
  lambda = str2num(get(handles.edit5,'string'));
  m = ones(1,a)
  s = ones(1,b)
  f = ones(1,n1)
  g = ones(1,n2)
  k = ones(1,lambda) 
  c = k.*(m.*s/f.*g)
  i = -3:1:5 
  figure
  p= plot(c,i) 

次のエラー メッセージが表示され続けます: Error times Matrix dimensions must agree。どうすればいいのかわからない?このプロジェクトの締め切りが迫っているのに、何もわからないので、真剣に助けが必要です! 前もって感謝します。

4

1 に答える 1

1
m = ones(1,a)
s = ones(1,b)
f = ones(1,n1)
g = ones(1,n2)
k = ones(1,lambda) 
c = k.*(m.*s/f.*g)

除算演算子のドットを忘れませんでしたか?

c = k.*(m.*s./f.*g)

そして、エラー自体については、a == b == n1 == n2 == lambdaでない限り、作成するベクトルの次元は同じではなく、(要素ごとに)乗算することはできません。これにより、Error times Matrix dimensions must agree

編集

plot(x,y)ポイント(x、y)を相互に接続する線を描画します。xを削除してのみ使用する場合plot(y)、xは1:Nであると見なされます(Nはベクトルyの要素の数です)

値c=lambda *(a * b / n1 * n2)をプロットする場合、plot(c)はその値をプロットするだけです。なぜ誰かがそれを使ってベクトルに変換するように言ったのか分かりませんか?

念のために言っておきますが

lambda=2
a  = 3
b  = 4
n1 = 5
n2 = 6

次に、c = 2 *(3 * 4/5 * 6)= 28.8次に、値28.8をプロットする必要がありますか?

これがあなたが望むものである場合、これはを使用して行われます

c = k.*(m.*s./f.*g);
plot(c);

パラメータにさらに値が含まれている場合、例:

lambda= [2 4]
a  = [3 5]
b  = [4 8]
n1 = [5 4]
n2 = [6 1]

同じことが当てはまりますが、c = k.*(m.*s./f.*g);戻っc=[28.8 40]plot(c)ポイント(1; 28.8)と(2; 40)を接続します

わかった?クリア?その場合の主な問題は、ユーザーが各テキストボックスに同じ量の数値を入力することを保証する必要があることです。そうしないと、ベクトル間に不一致が生じ、計算されません。[1 4 5].*[6 7]エラーが発生します。

于 2012-05-07T16:19:27.660 に答える