Matlab错误时间矩阵尺寸必须一致

时间:2012-05-07 16:06:47

标签: matlab

我正在尝试在Matlab中创建一个GUI,一旦您在编辑文本区域输入数据,就会绘制一个特定的图形。我的问题是,当我尝试使用此代码绘制图表时:

  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。我不知道该怎么办?我真的需要帮助,因为我有这个项目的截止日期,我很无能为力!提前谢谢。

1 个答案:

答案 0 :(得分: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),则绘图(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]将出错