2012-06-11 109 views
0

以下是我的代码。我想在绘制的东西3 d:matlab error matrix diminsion error

vp = 6000; 
vs = 1.0e+03 .*[0.5000, 0.6094 , 0.7188 , 0.8281 , 0.9375 , 1.0469 , 1.1562 , 1.2656 , 1.3750 , 1.4844, 1.5938 , 1.7031 , 1.8125 , 1.9219 ,2.0312 , 2.1406,2.2500 , 2.3594 , 2.4688 , 2.5781 ,2.6875 ,2.7969 , 2.9062 , 3.0156 , 3.1250 , 3.2344 , 3.3438 , 3.4531 , 3.5625 , 3.6719 ,3.7812 ,3.8906]; 

% y= vp ./ vs; 

y1= [12.0000,9.8462, 8.3478, 7.2453, 6.4000, 5.7313, 5.1892,  4.7407, 4.3636, 4.0421, 3.7647, 3.5229, 3.3103, 3.1220, 2.9538, 2.8029,2.6667 ,2.5430 ,2.4304 ,2.3273 ,2.2326 ,2.1453 , 2.0645 ,1.9896 ,1.9200 ,1.8551 ,1.7944 ,1.7376 ,1.6842 ,1.6340 ,1.5868 ,1.5422]; 

x = (0:0.2:2*pi); %# set a range for vale of x 
[X, Y] = meshgrid(x, y); 
p = sin(x); 
theta= [0.0833, 0.1016, 0.1198, 0.1380 , 0.1562 , 0.1745 , 0.1927 , 0.2109 , 0.2292 , 0.2474 , 0.2656, 0.2839 , 0.3021 , 0.3203, 0.3385 , 0.3568, 0.3750, 0.3932, 0.4115, 0.4297 , 0.4479 , 0.4661 , 0.4844 , 0.5026 , 0.5208 , 0.5391 , 0.5573 , 0.5755 ,0.5938 , 0.6120 ,0.6302 , 0.6484]; 
curl = ((theta .^ 2) - ((vs .* p) .^ 2)) .^ 0.5 

R_o = (1-2*(vs.^2)) ; 
k_o = (1 -2*(vs.^2)./(R_o)); 
R_pv = (2*curl.^(-1)).*(k_o).*((sin(x)).^2); 

mesh(x,R_pv,y1) 

的问题是在这里:

curl = ((theta .^ 2) - ((vs .* p) .^ 2)) .^ 0.5; 

我得到以下错误:

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

Error in ==> project1_Rpv at 11 
curl= ((theta .^ 2) - ((vs .* p) .^ 2)) .^ 0.5; 

尝试在问题:

我有一个直觉,我搞乱了一些矩阵,但不知道在哪里。我确定我的矩阵是1x1并且长度相同。

编辑:感谢奥利查尔斯沃斯,我已经修复了vs的长度。现在我收到以下错误:

??? Error using ==> mesh at 80 
Z must be a matrix, not a scalar or vector. 

Error in ==> project1_Rpv at 18 
mesh(x, R_pv, y1) ## (x, y, z) 

我所有的矩阵都是1x1但我仍然收到错误。

+4

输入'size(vs)'和'size(p)',然后比较! –

+0

哦,我见,我以为我解决这个问题, 感谢 – Quark

+0

仍然得到错误,我已经编辑我的帖子看看下面编辑...当我过去在这里变得凌乱 ???错误我们...... – Quark

回答

1

你的第一个问题是,x不具有相同的长度为vs,这

x = linspace(0,2*pi, length(vs)); 

会解决的问题。

你的第二个问题是,如果length(x) = nlength(R_pv) = m然后size(y1) = [m, n] 它目前不是。如果你在MATLAB中键入help mesh你应该明白为什么。