How to mirror a function vertically?

2 Ansichten (letzte 30 Tage)
Mohsen
Mohsen am 9 Apr. 2014
Beantwortet: Mohsen am 9 Apr. 2014
I have a function with non equal step size in the x axis. How can I mirror it vertically?
Here is my code:
close all; clear all; clc;
depth=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.6 1.8 2 2.2 2.4 2.6 2.7 2.8 2.9 3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4 4.2 4.4 4.6 4.8 4.9 5 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 6.2 6.3 6.4 6.5 6.6 6.8 6.9 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 8 8.2 8.4 8.6 8.8 9 9.2 9.4 9.6 9.8 10 10.2 10.4 10.6 10.8 11 11.2 11.4 11.6 11.8 12 12.2 12.4 12.6 12.8 13 13.2 13.4 13.6 13.8 14 14.2 14.4 14.6 14.8 15 15.2 15.4 15.6 15.8 16 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 18.4 18.6 18.8 19 19.2 19.4 19.6 19.8 20 20.2 20.4 20.6 20.8 21 21.2 21.4 21.6 21.8 22 22.2 22.4 22.6 22.8 23 23.2 23.4 23.6 23.8 24 24.2 24.4 24.6 24.8 25 25.2 25.4 25.6 25.8 26 26.2 26.4 26.6 26.8 27 27.2 27.4 27.6 27.8 28 28.2 28.4 28.6 28.8 29 29.2 29.4 29.6 29.8 30]; rel_dose=[ 61.8 63.2 66 73.8 81.3 86.4 90.5 93.9 96 97.4 98.6 99.2 99.9 99.8 100.7 100 99.2 98.9 98 97.2 96.3 96.1 95.7 95.2 94.7 94.1 93.8 92.8 92.4 92.2 91.7 91.1 90.2 89.6 88.9 88.1 87.2 87.1 86 85.3 85 84.4 84 83.8 83.4 83 82.5 82.1 81.3 81.1 80.3 80.4 79.7 78.7 78.7 77.9 78 77.3 77.2 76.4 76.3 75.6 75.2 74.8 74.1 73.2 72.4 71.9 71.1 70.4 69.7 68.9 68 67.4 66.6 65.9 65.3 64.6 64 63.1 62.4 61.9 61.3 60.5 59.6 59.2 58.5 58 57.4 56.7 56.1 55.5 54.7 54.1 53.8 53 52.4 51.6 51.2 50.8 50.1 49.5 49 48.3 47.8 47.6 46.8 46.3 45.8 45.5 45.1 44.4 43.8 43.5 42.9 42.5 42 41.4 41 40.4 40.3 39.8 39.3 38.9 38.4 38 37.5 37.1 36.6 36.3 35.9 35.4 35.1 34.9 34.4 34.1 33.8 33.4 33 32.6 32.2 31.9 31.5 31.1 30.8 30.4 30.1 29.7 29.5 29.2 28.8 28.4 28.2 27.9 27.5 27.2 26.9 26.6 26.4 25.9 25.9 25.5 25.3 25.1 24.7 24.5 24.2 23.9 23.7 23.3 23.1 22.9 22.7 22.4 22.2];
Seperatio_pt = find(depth==10); depth=depth(1:Seperatio_pt);
rel_dose_1=rel_dose(1:Seperatio_pt); rel_dose_2=rel_dose_1(length(rel_dose_1):-1:1)
figure; plot(depth,rel_dose_1, 'r', 'linewidth', 3);
xlabel('Depth (cm)'); ylabel('Relative Dose (%)'); title('(Normalized Relative Dose as a Function of Depth for a 6 MV POP; FS=10x10 cm2; separation=10 cm'); hold on
plot(depth,rel_dose_2, 'b', 'linewidth', 3);
  1 Kommentar
Mohsen
Mohsen am 9 Apr. 2014
If you run the code, you will see the 2 curves rel_dose_1 and rel_dose_2. Basically, rel_dose_2 should be an inverted version of rel_dose_1 with respect to the midpoint of rel_dose_1. I used the following code to do this:
rel_dose_2=rel_dose_1(length(rel_dose_1):-1:1);
Then, I plotted both as a function of x (depth). This would have worked very well if the step size in the x-axis was constant. However, since that is not the case, the rel_dose_2 is not a perfect mirrored version of the rel_dose_1. I think I have to create a for loop to do this correctly...

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Mohsen
Mohsen am 9 Apr. 2014
close all; clear all; clc;
depth=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.6 1.8 2 2.2 2.4 2.6 2.7 2.8 2.9 3 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4 4.2 4.4 4.6 4.8 4.9 5 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 6.2 6.3 6.4 6.5 6.6 6.8 6.9 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 8 8.2 8.4 8.6 8.8 9 9.2 9.4 9.6 9.8 10 10.2 10.4 10.6 10.8 11 11.2 11.4 11.6 11.8 12 12.2 12.4 12.6 12.8 13 13.2 13.4 13.6 13.8 14 14.2 14.4 14.6 14.8 15 15.2 15.4 15.6 15.8 16 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 18.4 18.6 18.8 19 19.2 19.4 19.6 19.8 20 20.2 20.4 20.6 20.8 21 21.2 21.4 21.6 21.8 22 22.2 22.4 22.6 22.8 23 23.2 23.4 23.6 23.8 24 24.2 24.4 24.6 24.8 25 25.2 25.4 25.6 25.8 26 26.2 26.4 26.6 26.8 27 27.2 27.4 27.6 27.8 28 28.2 28.4 28.6 28.8 29 29.2 29.4 29.6 29.8 30]; rel_dose=[ 61.8 63.2 66 73.8 81.3 86.4 90.5 93.9 96 97.4 98.6 99.2 99.9 99.8 100.7 100 99.2 98.9 98 97.2 96.3 96.1 95.7 95.2 94.7 94.1 93.8 92.8 92.4 92.2 91.7 91.1 90.2 89.6 88.9 88.1 87.2 87.1 86 85.3 85 84.4 84 83.8 83.4 83 82.5 82.1 81.3 81.1 80.3 80.4 79.7 78.7 78.7 77.9 78 77.3 77.2 76.4 76.3 75.6 75.2 74.8 74.1 73.2 72.4 71.9 71.1 70.4 69.7 68.9 68 67.4 66.6 65.9 65.3 64.6 64 63.1 62.4 61.9 61.3 60.5 59.6 59.2 58.5 58 57.4 56.7 56.1 55.5 54.7 54.1 53.8 53 52.4 51.6 51.2 50.8 50.1 49.5 49 48.3 47.8 47.6 46.8 46.3 45.8 45.5 45.1 44.4 43.8 43.5 42.9 42.5 42 41.4 41 40.4 40.3 39.8 39.3 38.9 38.4 38 37.5 37.1 36.6 36.3 35.9 35.4 35.1 34.9 34.4 34.1 33.8 33.4 33 32.6 32.2 31.9 31.5 31.1 30.8 30.4 30.1 29.7 29.5 29.2 28.8 28.4 28.2 27.9 27.5 27.2 26.9 26.6 26.4 25.9 25.9 25.5 25.3 25.1 24.7 24.5 24.2 23.9 23.7 23.3 23.1 22.9 22.7 22.4 22.2];
Seperation_pt = find(depth==10); depth_1=depth(1:Seperation_pt); depth_2=zeros(1,length(depth_1)); depth_2(1)=depth_1(length(depth_1));
for i = 2:length(depth_1) increment=depth_1(i)-depth_1(i-1); depth_2(i)=depth_2(i-1)-increment; end
rel_dose_1=rel_dose(1:Seperation_pt);
figure; plot(depth_1,rel_dose_1, 'r', 'linewidth', 3);
xlabel('Depth (cm)'); ylabel('Relative Dose (%)'); title('(Normalized Relative Dose as a Function of Depth for a 6 MV POP; FS=10x10 cm2; separation=10 cm'); hold on
plot(depth_2,rel_dose_1, 'b', 'linewidth', 3);

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by