필터 지우기
필터 지우기

Help with this MATLAB GUI code

조회 수: 1 (최근 30일)
Bastion
Bastion 2011년 9월 26일
I'm writing a code for a GUI program and there's something I can't get around.
M = str2double(get(handles.Input_M,'String'));
n = str2double(get(handles.Input_n,'String'));
Vx = str2double(get(handles.Input_Vx,'String'));
Dx = str2double(get(handles.Input_Dx,'String'));
Dy = str2double(get(handles.Input_Dy,'String'));
Dz = str2double(get(handles.Input_Dz,'String'));
t = str2double(get(handles.Input_3D_t,'String'));
X = str2double(get(handles.Input_3D_x,'String')); %%%error
Y = str2double(get(handles.Input_3D_y,'String')); %%%error
Z = str2double(get(handles.Input_3D_z,'String'));
[X,Y] = meshgrid(-10:0.1:10);
C = ((M./n)./(8).*((3.14.*t).^1.5).*sqrt(Dx.*Dy.*Dz)).*exp((-((X-Vx.*t).^2)./4.*Dx.*t)-(Y.^2/4.*Dy.*t)-(Z.^2./4.*Dz.*t)); %%%equation
contour3(X,Y,C,100)
I let the user input the variables for the equation which will generate a 3D contour. However for X and Y i get the red squiggly line that says "The value assigned to variable X might be unused".
So when I test the program, each different variable would change the contour in someway, however no matter what value I put for X or Y the contour doesn't change! Any ideas?

답변 (3개)

Grzegorz Knor
Grzegorz Knor 2011년 9월 26일
In this line:
[X,Y] = meshgrid(-10:0.1:10);
You overwrite X and Y.
  댓글 수: 9
Grzegorz Knor
Grzegorz Knor 2011년 9월 27일
If X and Y will be a scalar values, then C also will be a scalar, and you will not be able to draw a contour plot.
Bastion
Bastion 2011년 9월 27일
How do I change this? Use ()?

댓글을 달려면 로그인하십시오.


Jan
Jan 2011년 9월 27일
After your comment to Grzegorz's answer:
I'm deeply confused about your question, how you could do this. The problem is, that you overwrite an existing definition equivalent to:
X = 3;
X = 4;
You can avoid this by renaming on of the variables, e.g.:
X1 = 3;
X = 4;
Or:
X = 3;
X2 = 4;
But this is trivial and the program you've posted looks like you have enough programming skills to find this by your own.
The user can "input any number" for X and Y, so let's assume it is 19 in both cases. Now, how do you want this number to be used "as axis"? Currently you overwrite the values by "[X,Y] = meshgrid(-10:0.1:10);". Perhaps you want something like:
X = linspace(-X, X, 100);
Or:
X = -X:0.1:X
  댓글 수: 1
Bastion
Bastion 2011년 9월 27일
Yes that's what I want I guess, the X and Y defining the dimensions and as variables.
I'm actually only a beginner in Matlab GUI and all I'm doing is looking up the Help guide, not very helpful.
So the meshgrid() is basically setting out the dimensions in my plot? But it's overridding my values, I would be better off with linspace()?

댓글을 달려면 로그인하십시오.


Bastion
Bastion 2011년 10월 5일
I tried some of the suggestions but I can't seem to generate a contour anymore. Any ideas?

카테고리

Help CenterFile Exchange에서 Contour Plots에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by