Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I want to make some changes in the plot done by my senior, in Java. And since I do not know that language, I want to do it in Matlab. I have attached both the data (text format) and plot here. It is the output of project schedule where the value represents the cost associated with task (link) and their continuation in time (say task 2 is done from 6th to 9th month and cost is 0.665m $).
Value 0 indicate that there is no work in that time period for a particular task (row). The plot in Java, shows the variation in time and cost for each task.
I have been trying to make similar kind of plot (bar in case of the circles) in Matlab but could not.
Link# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 0 0 0 0 0 0 0 0 0 0 0 0 0.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0.665 0.665 0.665 0.665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0 0.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0.57 0.57 0.57 0.57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 0.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 0.58 0.58 0.58 0.58 0.58 0.58 0.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 0.24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0.56 0.56 0.56 0.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.62 0 0 0 0 0 0 0 0 0 0 0
15 0 0 0 0.582857143 0.582857143 0.582857143 0.582857143 0.582857143 0.582857143 0.582857143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16 0.536 0.536 0.536 0.536 0.536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0.6 0.6 0.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19 0 0 0 0 0.0000 0 0 0 0 0 0 0 0.606666667 0.606666667 0.606666667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20 0 0 0 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0.633333333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21 0 0 0.606666667 0.606666667 0.606666667 0.606666667 0.606666667 0.606666667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
22 0 0 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0.643076923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
23 0 0 0 0 0 0 0 0.58 0.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
24 0 0 0 0 0 0 0 0 0 0.651428571 0.651428571 0.651428571 0.651428571 0.651428571 0.651428571 0.651428571 0 0 0 0 0 0 0 0 0 0 0 0 0 0
25 0 0 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 0 0 0 0 0 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
27 0.546666667 0.546666667 0.546666667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
28 0 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
29 0.5 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30 0 0 0 0 0 0 0 0 0 0.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
31 0.54 0.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
32 0 0.64 0.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
33 0 0 0 0 0 0 0 0 0 0.611428571 0.611428571 0.611428571 0.611428571 0.611428571 0.611428571 0.611428571 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 0 0 0 0 0 0 0 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35 0.36 0.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36 0 0 0 0 0 0 0 0 0 0 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0 0 0 0 0 0 0 0 0 0 0 0
37 0.38 0.38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38 0.613333333 0.613333333 0.613333333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39 0.58 0.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
40 0 0 0 0 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0.647272727 0 0 0 0
java plot
Here is an example for a solution, assuming data is all what is within the chart (i.e., no axis tick labels):
Links_num = size(data,1);
[y,x] = ndgrid(1:Links_num,1:size(data,2));
c = repelem(1:Links_num,size(data,2),1).';
scatter(x(:),y(:),data(:)*100+1,c(:),'filled')
clr = lines(Links_num);
colormap(clr)
title('Time Period')
ax = gca;
ax.XAxisLocation = 'top';
ax.XAxis.TickValues(1) = [];
clr = lines(Links_num); % make a color map
ax.YAxis.Direction = 'reverse';
links = [repmat('Link ',Links_num,1) num2str((1:Links_num).')];
x = repelem(ax.XAxis.Limits(1)-0.05,Links_num); % make an x position vector
for k = 1:Links_num
text(ax.XAxis.Limits(1)-0.05,k,links(k,:),'Color',clr(k,:),...
'HorizontalAlignment','right');
end
ax.YAxis.Visible = 'off'; % remove the original labels
The result:
Related
I have currently created a function which takes in two arguments.
function p = matr(x, phi)
x_dir = linspace(0, x, 1);
r = linspace(0, phi, 1);
p = zeros(800, 2);
p(1:400, 1) = p(1:400, 1) + x_dir.';
p(401:800, 2) = p(401:800, 2) + r.';
end
Which returns this matrix for the given input:
path = trajectory(10, pi/2)
path =
0 0
0.0251 0
0.0501 0
0.0752 0
0.1003 0
0.1253 0
0.1504 0
0.1754 0
0.2005 0
0.2256 0
0.2506 0
0.2757 0
0.3008 0
0.3258 0
0.3509 0
0.3759 0
0.4010 0
0.4261 0
0.4511 0
0.4762 0
0.5013 0
0.5263 0
0.5514 0
0.5764 0
0.6015 0
0.6266 0
0.6516 0
0.6767 0
0.7018 0
0.7268 0
0.7519 0
0.7769 0
0.8020 0
0.8271 0
0.8521 0
0.8772 0
0.9023 0
0.9273 0
0.9524 0
0.9774 0
1.0025 0
1.0276 0
1.0526 0
1.0777 0
1.1028 0
1.1278 0
1.1529 0
1.1779 0
1.2030 0
1.2281 0
1.2531 0
1.2782 0
1.3033 0
1.3283 0
1.3534 0
1.3784 0
1.4035 0
1.4286 0
1.4536 0
1.4787 0
1.5038 0
1.5288 0
1.5539 0
1.5789 0
1.6040 0
1.6291 0
1.6541 0
1.6792 0
1.7043 0
1.7293 0
1.7544 0
1.7794 0
1.8045 0
1.8296 0
1.8546 0
1.8797 0
1.9048 0
1.9298 0
1.9549 0
1.9799 0
2.0050 0
2.0301 0
2.0551 0
2.0802 0
2.1053 0
2.1303 0
2.1554 0
2.1805 0
2.2055 0
2.2306 0
2.2556 0
2.2807 0
2.3058 0
2.3308 0
2.3559 0
2.3810 0
2.4060 0
2.4311 0
2.4561 0
2.4812 0
2.5063 0
2.5313 0
2.5564 0
2.5815 0
2.6065 0
2.6316 0
2.6566 0
2.6817 0
2.7068 0
2.7318 0
2.7569 0
2.7820 0
2.8070 0
2.8321 0
2.8571 0
2.8822 0
2.9073 0
2.9323 0
2.9574 0
2.9825 0
3.0075 0
3.0326 0
3.0576 0
3.0827 0
3.1078 0
3.1328 0
3.1579 0
3.1830 0
3.2080 0
3.2331 0
3.2581 0
3.2832 0
3.3083 0
3.3333 0
3.3584 0
3.3835 0
3.4085 0
3.4336 0
3.4586 0
3.4837 0
3.5088 0
3.5338 0
3.5589 0
3.5840 0
3.6090 0
3.6341 0
3.6591 0
3.6842 0
3.7093 0
3.7343 0
3.7594 0
3.7845 0
3.8095 0
3.8346 0
3.8596 0
3.8847 0
3.9098 0
3.9348 0
3.9599 0
3.9850 0
4.0100 0
4.0351 0
4.0602 0
4.0852 0
4.1103 0
4.1353 0
4.1604 0
4.1855 0
4.2105 0
4.2356 0
4.2607 0
4.2857 0
4.3108 0
4.3358 0
4.3609 0
4.3860 0
4.4110 0
4.4361 0
4.4612 0
4.4862 0
4.5113 0
4.5363 0
4.5614 0
4.5865 0
4.6115 0
4.6366 0
4.6617 0
4.6867 0
4.7118 0
4.7368 0
4.7619 0
4.7870 0
4.8120 0
4.8371 0
4.8622 0
4.8872 0
4.9123 0
4.9373 0
4.9624 0
4.9875 0
5.0125 0
5.0376 0
5.0627 0
5.0877 0
5.1128 0
5.1378 0
5.1629 0
5.1880 0
5.2130 0
5.2381 0
5.2632 0
5.2882 0
5.3133 0
5.3383 0
5.3634 0
5.3885 0
5.4135 0
5.4386 0
5.4637 0
5.4887 0
5.5138 0
5.5388 0
5.5639 0
5.5890 0
5.6140 0
5.6391 0
5.6642 0
5.6892 0
5.7143 0
5.7393 0
5.7644 0
5.7895 0
5.8145 0
5.8396 0
5.8647 0
5.8897 0
5.9148 0
5.9398 0
5.9649 0
5.9900 0
6.0150 0
6.0401 0
6.0652 0
6.0902 0
6.1153 0
6.1404 0
6.1654 0
6.1905 0
6.2155 0
6.2406 0
6.2657 0
6.2907 0
6.3158 0
6.3409 0
6.3659 0
6.3910 0
6.4160 0
6.4411 0
6.4662 0
6.4912 0
6.5163 0
6.5414 0
6.5664 0
6.5915 0
6.6165 0
6.6416 0
6.6667 0
6.6917 0
6.7168 0
6.7419 0
6.7669 0
6.7920 0
6.8170 0
6.8421 0
6.8672 0
6.8922 0
6.9173 0
6.9424 0
6.9674 0
6.9925 0
7.0175 0
7.0426 0
7.0677 0
7.0927 0
7.1178 0
7.1429 0
7.1679 0
7.1930 0
7.2180 0
7.2431 0
7.2682 0
7.2932 0
7.3183 0
7.3434 0
7.3684 0
7.3935 0
7.4185 0
7.4436 0
7.4687 0
7.4937 0
7.5188 0
7.5439 0
7.5689 0
7.5940 0
7.6190 0
7.6441 0
7.6692 0
7.6942 0
7.7193 0
7.7444 0
7.7694 0
7.7945 0
7.8195 0
7.8446 0
7.8697 0
7.8947 0
7.9198 0
7.9449 0
7.9699 0
7.9950 0
8.0201 0
8.0451 0
8.0702 0
8.0952 0
8.1203 0
8.1454 0
8.1704 0
8.1955 0
8.2206 0
8.2456 0
8.2707 0
8.2957 0
8.3208 0
8.3459 0
8.3709 0
8.3960 0
8.4211 0
8.4461 0
8.4712 0
8.4962 0
8.5213 0
8.5464 0
8.5714 0
8.5965 0
8.6216 0
8.6466 0
8.6717 0
8.6967 0
8.7218 0
8.7469 0
8.7719 0
8.7970 0
8.8221 0
8.8471 0
8.8722 0
8.8972 0
8.9223 0
8.9474 0
8.9724 0
8.9975 0
9.0226 0
9.0476 0
9.0727 0
9.0977 0
9.1228 0
9.1479 0
9.1729 0
9.1980 0
9.2231 0
9.2481 0
9.2732 0
9.2982 0
9.3233 0
9.3484 0
9.3734 0
9.3985 0
9.4236 0
9.4486 0
9.4737 0
9.4987 0
9.5238 0
9.5489 0
9.5739 0
9.5990 0
9.6241 0
9.6491 0
9.6742 0
9.6992 0
9.7243 0
9.7494 0
9.7744 0
9.7995 0
9.8246 0
9.8496 0
9.8747 0
9.8997 0
9.9248 0
9.9499 0
9.9749 0
10.000 0
0 0
0 0.0039
0 0.0079
0 0.0118
0 0.0157
0 0.0197
0 0.0236
0 0.0276
0 0.0315
0 0.0354
0 0.0394
0 0.0433
0 0.0472
0 0.0512
0 0.0551
0 0.0591
0 0.0630
0 0.0669
0 0.0709
0 0.0748
0 0.0787
0 0.0827
0 0.0866
0 0.0905
0 0.0945
0 0.0984
0 0.1024
0 0.1063
0 0.1102
0 0.1142
0 0.1181
0 0.1220
0 0.1260
0 0.1299
0 0.1339
0 0.1378
0 0.1417
0 0.1457
0 0.1496
0 0.1535
0 0.1575
0 0.1614
0 0.1653
0 0.1693
0 0.1732
0 0.1772
0 0.1811
0 0.1850
0 0.1890
0 0.1929
0 0.1968
0 0.2008
0 0.2047
0 0.2087
0 0.2126
0 0.2165
0 0.2205
0 0.2244
0 0.2283
0 0.2323
0 0.2362
0 0.2401
0 0.2441
0 0.2480
0 0.2520
0 0.2559
0 0.2598
0 0.2638
0 0.2677
0 0.2716
0 0.2756
0 0.2795
0 0.2835
0 0.2874
0 0.2913
0 0.2953
0 0.2992
0 0.3031
0 0.3071
0 0.3110
0 0.3149
0 0.3189
0 0.3228
0 0.3268
0 0.3307
0 0.3346
0 0.3386
0 0.3425
0 0.3464
0 0.3504
0 0.3543
0 0.3583
0 0.3622
0 0.3661
0 0.3701
0 0.3740
0 0.3779
0 0.3819
0 0.3858
0 0.3897
0 0.3937
0 0.3976
0 0.4016
0 0.4055
0 0.4094
0 0.4134
0 0.4173
0 0.4212
0 0.4252
0 0.4291
0 0.4331
0 0.4370
0 0.4409
0 0.4449
0 0.4488
0 0.4527
0 0.4567
0 0.4606
0 0.4645
0 0.4685
0 0.4724
0 0.4764
0 0.4803
0 0.4842
0 0.4882
0 0.4921
0 0.4960
0 0.5000
0 0.5039
0 0.5079
0 0.5118
0 0.5157
0 0.5197
0 0.5236
0 0.5275
0 0.5315
0 0.5354
0 0.5393
0 0.5433
0 0.5472
0 0.5512
0 0.5551
0 0.5590
0 0.5630
0 0.5669
0 0.5708
0 0.5748
0 0.5787
0 0.5827
0 0.5866
0 0.5905
0 0.5945
0 0.5984
0 0.6023
0 0.6063
0 0.6102
0 0.6141
0 0.6181
0 0.6220
0 0.6260
0 0.6299
0 0.6338
0 0.6378
0 0.6417
0 0.6456
0 0.6496
0 0.6535
0 0.6575
0 0.6614
0 0.6653
0 0.6693
0 0.6732
0 0.6771
0 0.6811
0 0.6850
0 0.6889
0 0.6929
0 0.6968
0 0.7008
0 0.7047
0 0.7086
0 0.7126
0 0.7165
0 0.7204
0 0.7244
0 0.7283
0 0.7323
0 0.7362
0 0.7401
0 0.7441
0 0.7480
0 0.7519
0 0.7559
0 0.7598
0 0.7637
0 0.7677
0 0.7716
0 0.7756
0 0.7795
0 0.7834
0 0.7874
0 0.7913
0 0.7952
0 0.7992
0 0.8031
0 0.8071
0 0.8110
0 0.8149
0 0.8189
0 0.8228
0 0.8267
0 0.8307
0 0.8346
0 0.8385
0 0.8425
0 0.8464
0 0.8504
0 0.8543
0 0.8582
0 0.8622
0 0.8661
0 0.8700
0 0.8740
0 0.8779
0 0.8819
0 0.8858
0 0.8897
0 0.8937
0 0.8976
0 0.9015
0 0.9055
0 0.9094
0 0.9133
0 0.9173
0 0.9212
0 0.9252
0 0.9291
0 0.9330
0 0.9370
0 0.9409
0 0.9448
0 0.9488
0 0.9527
0 0.9567
0 0.9606
0 0.9645
0 0.9685
0 0.9724
0 0.9763
0 0.9803
0 0.9842
0 0.9881
0 0.9921
0 0.9960
0 1.0000
0 1.0039
0 1.0078
0 1.0118
0 1.0157
0 1.0196
0 1.0236
0 1.0275
0 1.0315
0 1.0354
0 1.0393
0 1.0433
0 1.0472
0 1.0511
0 1.0551
0 1.0590
0 1.0629
0 1.0669
0 1.0708
0 1.0748
0 1.0787
0 1.0826
0 1.0866
0 1.0905
0 1.0944
0 1.0984
0 1.1023
0 1.1063
0 1.1102
0 1.1141
0 1.1181
0 1.1220
0 1.1259
0 1.1299
0 1.1338
0 1.1377
0 1.1417
0 1.1456
0 1.1496
0 1.1535
0 1.1574
0 1.1614
0 1.1653
0 1.1692
0 1.1732
0 1.1771
0 1.1810
0 1.1850
0 1.1889
0 1.1929
0 1.1968
0 1.2007
0 1.2047
0 1.2086
0 1.2125
0 1.2165
0 1.2204
0 1.2244
0 1.2283
0 1.2322
0 1.2362
0 1.2401
0 1.2440
0 1.2480
0 1.2519
0 1.2558
0 1.2598
0 1.2637
0 1.2677
0 1.2716
0 1.2755
0 1.2795
0 1.2834
0 1.2873
0 1.2913
0 1.2952
0 1.2992
0 1.3031
0 1.3070
0 1.3110
0 1.3149
0 1.3188
0 1.3228
0 1.3267
0 1.3306
0 1.3346
0 1.3385
0 1.3425
0 1.3464
0 1.3503
0 1.3543
0 1.3582
0 1.3621
0 1.3661
0 1.3700
0 1.3740
0 1.3779
0 1.3818
0 1.3858
0 1.3897
0 1.3936
0 1.3976
0 1.4015
0 1.4054
0 1.4094
0 1.4133
0 1.4173
0 1.4212
0 1.4251
0 1.4291
0 1.4330
0 1.4369
0 1.4409
0 1.4448
0 1.4488
0 1.4527
0 1.4566
0 1.4606
0 1.4645
0 1.4684
0 1.4724
0 1.4763
0 1.4802
0 1.4842
0 1.4881
0 1.4921
0 1.4960
0 1.4999
0 1.5039
0 1.5078
0 1.5117
0 1.5157
0 1.5196
0 1.5236
0 1.5275
0 1.5314
0 1.5354
0 1.5393
0 1.5432
0 1.5472
0 1.5511
0 1.5550
0 1.5590
0 1.5629
0 1.5669
0 1.5708
But i want to modify this function so that it can two lists like:
trajectory([x1, x2, x3, ... xn], [phi1, phi2, phi3, ..., phin])
and create a matrix like this:
trajectory =
x1 0
x1+k 0
. 0
. 0
x1_n 0
0 phi1
0 phi1+k
0 .
0 .
0 phi1_n
x2 0
x2+k 0
. 0
. 0
x2_n 0
0 phi2
0 phi2+k
0 .
0 .
0 phi2_n
and so on. So I was wandering if there was a more automatic way expanding the matrix, so that two lists can be provided as an input argument and the matrix expanding according to the elements of the list.
function p = matr(x, phi)
p = zeros(800*length(x), 2);
for ii = 1:length(x)
x_dir = linspace(0, x(ii), 400);
r = linspace(0, phi(ii), 400);
p((800*(ii-1)+1):(800*(ii-1)+400), 1) = x_dir;
p((800*ii-399):(800*ii), 2) = r;
end
end
OR
function p2 = matr_compound(x, phi)
p2 = [];
for ii = 1:length(x)
p2 = [p2; matr(x(ii), phi(ii))];
end
end
I am new to matlab coding and I would like to know how to plot a tour visiting all points in a minimum spanning tree (yes, TSP/TSM). I was given a set of points a matrix of 20x2 and I was able to find out the MST of these points and I need help figuring out how to plan a tour of these points of minimum possible distance?
my adj matrix for the MST is,
X_st =
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Obtained from kruskal algorithm to plot a MST of a complete graph.
My, neighbouring weighted matrix obtained from kruskal function is,
1 3
7 17
5 20
6 14
1 17
6 20
16 19
2 14
7 11
6 18
12 19
14 16
10 19
8 11
2 8
3 15
9 18
4 19
13 15
Any guidance would be much appreciated.
once you have extracted the points for the MST using krushkals algorithm u need to use f=figure then for each (x,y) point it has to be like f = f + plot(x1,y1,x2,y2,[options]) plot and the plot code should be surrounded by hold on hold off please let me know if the answer was helpful the complete snippet will be like
f = figure;
hold on
f = f + plot(x1,y1,x2,y2) //put this in a loop for all points
hold off
I have 37 linear equations with 36 variables in the form of matrix: A x = b. (A has 37 rows and 36 columns.) The equations don't have an exact solution so I have used Matlab to find the closest answer using x = A \ b.
The problem is that I also have a condition, all elements of x should be positive: xi > 0 for all i. x = A \ b gives negative values for some elements. How can I apply this constraint ?
Here are the concrete values of A and b that I'm working with:
A = [0.83 0.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.02 0.63 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.02 -0.37 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.02 -0.37 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0.02 -0.37 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0.02 -0.2 0 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.15 0 0 0 0 0 -0.32 0.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0.15 0 0 0 0 0.02 -0.33 0 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0.15 0 0 0 0 0 -0.32 0.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.35 0 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0 -0.32 0.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.35 0 0 0 0 0.18 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0 -0.32 0.17 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.52 0.17 0 0 0 0.18 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.35 0 0 0 0 0.018 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0 -0.32 0.17 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.34 0.17 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.34 0.17 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.34 0.17 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.34 0.17
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.02 -0.17
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
b = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]';
You want to find an approximate solution x to A x = b in the least-squares sense, i.e. you want to minimize
||A x - b||2 = xT AT A x
+ bT b - 2 xT AT b.
Disregarding the constant term bTb and dividing by a factor 2, this fits the form of a quadratic programming problem, which is to minimize
1/2 xT H x + fT x,
if we choose H = AT A and f = - AT b.
The corresponding use of quadprog is:
H = A' * A;
f = - A' * b;
x = quadprog(H, f)
You also want the elements of x to be positive. A non-negativity constraint can be introduced using the additional parameters to quadprog, A and b (not to be confused with your matrices!):
n = size(A, 2);
x = quadprog(H, f, -eye(n), zeros(n, 1))
A positivity constraint does not make sense, because if the optimal solution involves one or more elements of x to be exactly 0, then a strictly positive solution will be the better the smaller the corresponding elements are: 0.01 will be better than 0.1, 0.001 will be better than 0.01, etc. etc. – there is no natural bound. If you want to make sure that the solution is all-positive, you have to set a finite bound yourself:
x = quadprog(H, f, -eye(n), zeros(n, 1) + 0.001)
Now the smallest possible value of an element of x is 0.001.
Update after the question was supplemented with the actual data of A and b: Using the code
H = A' * A;
f = - A' * b;
n = size(A, 2);
x = quadprog(H, f, -eye(n), zeros(n, 1))
I get the result:
Minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
x =
0.000380906335150292
3.90638261088393e-05
0.0111196970167585
0.0227055107206744
0.0318402514628274
0.0371743514880516
0.000800900221354844
0.00746652476710186
0.0180511534370576
0.0282423767946842
0.0362606972021829
0.0417582260990786
0.00860220929402253
0.0174105435824309
0.0265771677458008
0.0343071472371469
0.0395176470725881
0.0419494410289298
0.0187719294637544
0.0268976053211278
0.0336818044612046
0.0382365751296441
0.0398823076542831
0.0391016682549663
0.0279383031707377
0.0339393563379992
0.0377917413001034
0.0382731422972829
0.0338557405807941
0.0217568643500703
0.0343698083354502
0.0381554349806972
0.0392353941260779
0.0368010570888738
0.031271868401718
0.0258232230013864
This would be a linear optimization problem when you have x>0 condition. The best algorithm to solve that is simplex algorithm. The idea is that each linear equation aix=bi provide a line and the combination of these lines provide a polygon/polyhedron and the answer is one of the vertices of this polyhedron/polygon. Simplex algorithm is pretty standard and there are many available functions and libraries tha can calculate that.
The Matlab functions lsqlin or lsqnonneg can be used to solve your issue.
e.g:
x=lsqnonneg(A,b)
will give you what you are looking for.
So I tried the matrix exponential function using MATLAB's Coder toolkit, and I got it to build. I went on to test to see if the results were reliable and more efficient. While the code was faster, the answer it produced was very slight.
I ran the original function and got an answer of:
p =
1 0 0 0 0 0 0 0 0 0 0 0
-0.05 1 -1.25e-07 5e-06 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0
1.25e-07 -5e-06 -0.05 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 -0.05 1 0 0 0 0 0 0
-2.0833e-05 0.00125 -5.2083e-11 4.1667e-09 0 0 1 0.05 0 1.25e-07 0 0
-0.00125 0.05 -4.1667e-09 2.5e-07 0 0 0 1 0 5e-06 0 0
5.2083e-11 -4.1667e-09 -2.0833e-05 0.00125 0 0 0 -1.25e-07 1 0.05 0 0
4.1667e-09 -2.5e-07 -0.00125 0.05 0 0 0 -5e-06 0 1 0 0
0 0 0 0 -2.0833e-05 0.00125 0 0 0 0 1 0.05
0 0 0 0 -0.00125 0.05 0 0 0 0 0 1
And I then ran the mexed version of the function with the same input:
p2 =
1 0 0 0 0 0 0 0 0 0 0 0
-0.05 1 -1.25e-07 5e-06 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0
1.25e-07 -5e-06 -0.05 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 -0.05 1 0 0 0 0 0 0
-2.0833e-05 0.00125 -5.2083e-11 4.1667e-09 0 0 1 0.05 0 1.25e-07 0 0
-0.00125 0.05 -4.1667e-09 2.5e-07 0 0 0 1 0 5e-06 0 0
5.2083e-11 -4.1667e-09 -2.0833e-05 0.00125 0 0 0 -1.25e-07 1 0.05 0 0
4.1667e-09 -2.5e-07 -0.00125 0.05 0 0 0 -5e-06 0 1 0 0
0 0 0 0 -2.0833e-05 0.00125 0 0 0 0 1 0.05
0 0 0 0 -0.00125 0.05 0 0 0 0 0 1
At first glance, these two matrices are equal, but they are actually VERY SLIGHTLY off:
p-p2
ans =
0 0 0 0 0 0 0 0 0 0 0 0
-6.9389e-18 0 0 8.4703e-22 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
-3.3881e-21 -2.1684e-19 -3.2312e-26 8.2718e-25 0 0 0 0 0 5.294e-23 0 0
-2.1684e-19 0 -8.2718e-25 5.294e-23 0 0 0 0 0 8.4703e-22 0 0
6.4623e-27 0 -3.3881e-21 2.1684e-19 0 0 0 0 0 0 0 0
0 0 0 6.9389e-18 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
Most of the result is equivalent to the original function, but some of it is not. Also, the difference between the two is so small that I cant possibly believe it would be a mathematical error, rather than perhaps a precision error. And the reason I am so concerned with this, is because this does cause issues with the overlaying reason I am using the function.
Is there a reason why the mex function is off by so little, and is there a way to fix this?
The differences you observe are so little that you can consider the results actually are the same.
The way they are computed are different and that is why you do not get exactly the same result. Yet the difference is roughly machine epsilon and is just due to the fact that computers do not work with an infinite precision but with some discrete representation of the numbers.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
% read in data
fid = fopen('filepath');
data = textscan(fid,'%f%f%f%f','HeaderLines',2,'CollectOutput',1);
data = data{:};
fid = fclose(fid);
% retrieve column 1
data(:,1)
% Number of rows
size(data,1)
http://www.mathworks.com/matlabcentral/answers/3294-read-text-file-into-a-matrix
You may have to adapt the code a bit for your particular data file.
Just put brackets around the whole thing, and set it equal to a variable:
myData = [0 0 1 0 ... ];