Matrix Dimensions do NOT agree
이전 댓글 표시
%PLOTTING ARRIVAL TIMES OF DIRECT, REFLECTED & HEAD WAVE
%DEFINING VARIABLES
h=[2:10]; %Depth
v1=3500:4000; %Velocity
x=[0:40]; %Horizontal Distance
%FORMULAE FOR ARRIVAL TIMES
t_reflect = ((x.^2+4*h.^2).^0.5/v1); %Formula for arrival time
I am making some simple plots of seismic rays, modelling a reflecting rays arrival time against horizontal distance, using the formula in the code.
Initially, the distance is a range of values from 0 - 40m, and the velocity and depth are just set values.
Now, I am trying to plot the arrival time as a function of a range of velocities and as function of a range of depths at a certain point along the x axis (two subplots I suppose)
eg x=10
v1 = [2500:4000]
h = [2:10]
but obviously the matrix dimensions do not agree...any help appreciated
채택된 답변
추가 답변 (1개)
JDilla
2015년 5월 10일
0 개 추천
댓글 수: 3
Star Strider
2015년 5월 10일
No worries!
To fix it at one velocity = 3500 and one distance x = 10:
T_Reflect = t_reflect(h,3500,10); % Calculate Time At x=10, v1 = 3500
The plot is figure(2), but without the legend:
figure(2)
plot(h, T_Reflect)
grid
xlabel('Depth')
ylabel('Arrival Time')
JDilla
2015년 5월 10일
Star Strider
2015년 5월 11일
Not really. I intended it to be ‘h’. If you want the function to be of one variable only for each plot, we have to do two separate calls to ‘t_reflect’.
I initially thought you only wanted it as I wrote it in my last Comment, with only figure(2) and only with the one line. Velocity and Distance are now fixed, so the only variable is Depth. As I understand it, with only one Velocity value, figure(1) is now out of the picture.
What do you want to do with figure(1)? To get one line in it, you would have to fix a value for Depth as well, and then let Velocity vary. Fixing Depth at 5 here, and with a separate call to the function (note the lower-case variable names indicating that they are vectors and not the matrices created by meshgrid), we get:
T_Reflect_1 = t_reflect(5,v1,10); % Calculate Time At x=10, h = 5
T_Reflect_2 = t_reflect(h,3500,10); % Calculate Time At x=10, v1 = 3500
so figure(1) then becomes:
figure(1)
plot(v1, T_Reflect_1')
grid
xlabel('Velocity')
ylabel('Arrival Time')
and figure(2):
figure(2)
plot(h, T_Reflect_2)
grid
xlabel('Depth')
ylabel('Arrival Time')
카테고리
도움말 센터 및 File Exchange에서 Graphics Performance에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!