2011-03-09 170 views
1

我打字一些代碼爲一類,但我每次運行該功能時,我得到了同樣的錯誤:如何解決這個MATLAB「矩陣尺寸必須一致」的錯誤?

??? Error using ==> plus 
Matrix dimensions must agree. 

Error in ==> Test at 6 
f32=3.*exp((-x2.^2-y1.^2)./3); 

我知道這個問題是一個簡單的索引錯誤,但我似乎無法找到它任何地方。有人能幫助我嗎?

另外我在與下面的行的代碼相同的問題:

f34=(exp(-0.3./x2))./(log(y2).*sqrt(x2)); 

EDIT#1:

x2被定義爲0:0.1:5y1被定義爲-5:0.1:5,但是我被分配來定義他們的。我知道exp不是一個函數,因爲我在文件的其他地方使用了它。

編輯#2:

確定。因此,如果我不能使用我當前的x和y,那麼無論如何我可以將它們定義爲使它們保持在這些邊界上,同時仍然使它們具有相同的大小?

回答

3

UPDATE:

OK,現在你已經證實了你的變量x2y1包含的元素不同的數字,你有一對夫婦的解決方案可供選擇:

  1. 對於每個變量,您可以使用功能LINSPACE在相應範圍內創建一組數值。例如:

    x2 = linspace(0,5,101); %# 101 values spanning the range 0 to 5 
    y1 = linspace(-5,5,101); %# 101 values spanning the range -5 to 5 
    

    但是,當計算結果f32(這也將是一個101個元素的陣列),它只會被在值的相應對中x2y1(例如x2(1)y1(1)評價,x2(50)y1(50)等)。

  2. 如果你寧願評估f32獨特的對點上的x2y1範圍,你應該使用功能MESHGRID生成你的價值觀。這也將允許你有超過所述範圍的點的不同號碼x2y1和:

    [x2,y1] = meshgrid(0:0.1:5,-5:0.1:5); 
    

    上面將創建x2y1和作爲101逐51陣列,使得f32也將是一個101-在給定的值範圍內的所有點上評估-51陣列。

以前的答案:

測試的第一件事情是,如果你是把代入公式的變量大小相同或標量值,他們將不得不因爲你正在使用元素明智的運營商,如.^.*。對於第一個方程可知,當你這樣做你會得到什麼輸出:

size(x2) 
size(y1) 

如果他們給了相同的結果,或任爲[1 1],那麼這是不是你的問題。

接下來要檢查的是,是否通過創建名稱爲exp的變量來影響EXP函數。如果在命令窗口中將代碼作爲腳本運行,請鍵入whos並查看是否顯示名爲exp的變量。如果是這樣,您需要刪除或重命名它,以便您可以使用函數 EXP。

0

x2y1的大小不同,您如何看待-x2.^2-y1.^2x2=0:0.1:5有五十個左右,而y1=-5:0.1:5有一百個左右的條目。