2017-04-18 15 views
0

我是matlab新手,我遇到了困難:我想繪製一個函數圖,'r'表示拋物線方程和'y'值,變化並且在加入'k'時顯示錯誤。代碼如下所示`清除所有;在matlab中繪製一個圖(Matrix dimensionions必須同意)

x=[3,4,5,6,7,8,9,10,11,10,13,14,15,16,17,18,19,20,21,22,23]; 
a=(8.854.*(10.^-12).*(0.016)); 
y=-0.0925:0.01:0.0925 
z=(0.03); 
r=((7.3.*(y).^2)+(z)); 
k=((x.*10^-2))+((r)) 
c=(a./k); 
plot(x,c); 

並在命令窗口中的錯誤是

Error using + 
matrix dimensions must agree. 
error in program(line 8) 
k=((x.*10^-2))+((r)) 

我怎麼能解決這個問題得到什麼?

+0

'K =((X * 10^-2))+((R))'你'添加兩個不同大小的向量,這是不確定的。 – user2999345

+0

您是否希望'k'爲2D,以便爲'x'和'y'的所有排列計算出來, – Suever

+0

'x'爲'1x21','r'爲'1x19'。那麼你如何期待'(x。* 10^-2))+((r))'發生? –

回答

0

正如人們在評論中指出的那樣,矩陣尺寸是問題。如果您x相同的尺寸爲y(即1x19),如下圖所示,你會產生一種圖形,這是它聽起來像你想:

x=3:21; 
a=(8.854.*(10.^-12).*(0.016)); 
y=-0.0925:0.01:0.0925 
z=(0.03); 
r=((7.3.*(y).^2)+(z)); 
k=((x.*10^-2))+((r)) 
c=(a./k); 
plot(x,c); 
0

從您的評論:如果你想在2-D,即,每對xrk的一個值,然後在Matlab 2016a +中,所有你需要的是k=((x.*10^-2))+((r).'),即一個轉置。順便說一句

[xr,rx] = meshgrid(x,r); 
k = arrayfun(@(x,r) ((x.*10^-2))+((r)),xr,rx); 

,畫出你不會用情節,imagesc 2-d圖片:在預-2016,你可以使用arrayfun這一點。這是什麼樣子:

Image of your variable kImage of your variable c

首先:您的變量k,第二:你的變量c。這是你在找什麼?

0

正如Matlab指出的,在評論中,問題的確是矢量大小的差異。 你可以改變x或更好的解決方案是使用linspace,如:

y=linspace(-0.925,0.0915,21); 
在術語