Преобразование уравнения октава / матрица из 2D в 3D график - PullRequest
1 голос
/ 16 мая 2019

Преобразование 2D-кода / графика в 3D-код / ​​график.

Я могу создать 2D-график, используя код ниже, который создает график ниже. Но как я могу превратить этот 2D-график в 3D-график. Я попытался использовать meshgrid для этого, но созданный график не в 3D, и кривые больше не отображаются на графике. Я включил 2D-код, который я использую ниже, вместе с графиком, который он создает. Также внизу я показываю 3D-код и неправильный график, который он создает в конце.

Formula image

%---2D working code    
clear all,clf reset,tic,clc, close all, 
    S=[15.3039,10.3612,7.9153,6.3793,5.3019,4.4955,3.8656,3.3584,2.9405,2.5903,2.2926,2.0367,1.8146,1.6204,1.4496,1.2983,1.1638,1.04377,.93622,.83959,.75256,.67401,.603,.53871,.48045,.42762,.37969,.33619,.29673,.26094,.22852,.19917,.17265,.14874,.12722,.10791,.090664,.075316,.061733,.049793,.039383,.030399,.0227475,.0163414,.0111008,.0069525,.0038286,.0016664,.0004081];
    x = linspace(0,1,100);
    T = 1.12;
    for bb = 1:length(S)
      y1=exp(log(1-x.^(S(1,bb)*T))/(S(1,bb)*T)); %right to left top to bottom
      hold on
      plot(x,y1,'r')
    end

2D correct plot of equation

Код Я пытался использовать сетку с сеткой, но она не в 3D и шаблон кривой больше не существует.

%---3D non-working code
clear all,clf reset,tic,clc, close all, 
    S=[15.3039,10.3612,7.9153,6.3793,5.3019,4.4955,3.8656,3.3584,2.9405,2.5903,2.2926,2.0367,1.8146,1.6204,1.4496,1.2983,1.1638,1.04377,.93622,.83959,.75256,.67401,.603,.53871,.48045,.42762,.37969,.33619,.29673,.26094,.22852,.19917,.17265,.14874,.12722,.10791,.090664,.075316,.061733,.049793,.039383,.030399,.0227475,.0163414,.0111008,.0069525,.0038286,.0016664,.0004081];
    x = linspace(0,1,10);
    T = 1.12;
    [SS,xx]=meshgrid(S,x); %create meshgrid data

    for bb = 1:length(S)
      z=exp(log(1-xx.^(SS*T))/(SS*T)); %right to left top to bottom
      hold on
      plot(xx,SS,z,'r')
    end

Некорректный код 3D изображения enter image description here

PS: я использую Octave 4.2.2, которая похожа на matlab.

1 Ответ

1 голос
/ 17 мая 2019

Я бы предложил использовать что-то вроде surf:

y1 = zeros(length(x),length(S));
for ii = 1:length(x)
   for jj = 1:length(S)
      y1(ii,jj) = exp(log(1-x(ii)^(S(jj)*T))/(S(jj)*T));
   end
end
surf(S,x,y1,'faceColor','interp','linestyle','none')

, что дает:

enter image description here

...