Save array values separetly in cells during a for loop

4 次查看(过去 30 天)
Hello,
I have a for loop that returns in each iteration a 6x1 array. I want to save the value of the 6 elements in a different cell so in the end I have a 6x1 cell with 2500 (for loop iteration) elements.
function [qdd,qds,qs]= qsiguiente(EM,torque,E2,zvel,deltaT,zpos,n,i)
%qdd is a 6x1 array
qdd= EM\(torque-E2);
%speed
for indx=1:6
%%%%%%
% MY APROACH (not working) convert this 6x1 array to a 6x1
% cell with 2500 iterations
qdd{indx,1}=qdd(indx,1);
%%%%%%
qdd{indx,1}=qdd(indx,1);
qds(indx,1)=zvel{indx}(1,i)+deltaT*qdd(indx,1);
% position
qs(indx,1)=zpos{indx}(1,i)+deltaT*qds(indx,1);
end
end

采纳的回答

Voss
Voss 2022-1-28
You cannot convert a numeric matrix to a cell array in-place like that, but you can make a new cell array variable and do it:
qdd = rand(6,1);
qdd_cell = cell(size(qdd));
for indx = 1:numel(qdd)
qdd_cell{indx,1} = qdd(indx,1);
end
disp(qdd); disp(qdd_cell);
0.1979 0.8719 0.6815 0.9625 0.4098 0.6827 {[0.1979]} {[0.8719]} {[0.6815]} {[0.9625]} {[0.4098]} {[0.6827]}
Or, simpler:
qdd_cell = num2cell(qdd);
disp(qdd); disp(qdd_cell);
0.1979 0.8719 0.6815 0.9625 0.4098 0.6827 {[0.1979]} {[0.8719]} {[0.6815]} {[0.9625]} {[0.4098]} {[0.6827]}
However, I'm not sure a cell array is the best choice for what you want to do. If the idea is that each iteration adds a new element to each cell of qdd_cell, why not just use a 2D numeric matrix?
That is, instead of doing this:
qdd_cell = num2cell(qdd);
N_iterations = 100;
for jj = 1:N_iterations
for indx = 1:numel(qdd)
qdd_cell{indx}(end+1) = randn();
end
end
disp(qdd_cell);
{[0.1979 1.3184 -0.4066 0.2984 0.4895 0.5974 -0.0229 -1.1849 -0.4800 -1.0499 -0.4783 1.2495 -0.3460 2.1856 -0.3872 0.4493 0.3742 -0.9162 2.1993 0.7583 -0.3564 0.3000 1.0370 -0.3882 1.1593 1.1833 -0.4546 0.5094 -0.0470 … ]} {[ 0.8719 -1.1574 2.6773 -0.4751 0.0783 0.0431 -0.0412 -1.0519 -0.3133 -1.6014 -2.7592 -0.4468 -0.4487 0.3383 1.3248 1.3718 -0.1225 -0.9849 -0.1420 -2.1463 0.1925 0.8244 0.7885 -0.2629 -0.2415 -0.2744 0.7501 0.6819 … ]} {[ 0.6815 1.3340 -0.1197 2.2514 0.0535 0.4672 -0.4069 -0.3475 -1.4043 0.9099 0.8901 1.2388 -1.7230 -1.0479 0.0235 -0.2098 0.7027 -0.2710 -1.8637 0.4115 -0.3248 -0.7923 -0.6348 -0.5695 0.2774 0.7003 0.4823 -0.3350 … ]} {[ 0.9625 0.8388 -0.4657 -3.1278 -0.5768 0.6173 1.5956 0.8062 -0.7343 -0.5167 -0.5327 0.9215 -1.1369 -2.6464 0.4665 -0.5237 -0.2613 -0.1988 -0.5226 -0.6931 1.2769 -1.4648 0.4755 0.7316 2.7159 0.0724 1.6769 -0.7795 … ]} {[ 0.4098 -0.7810 -0.5091 0.2972 0.5440 -0.1566 -1.0752 -1.2345 1.2092 -1.0769 -0.1973 2.1954 2.9317 0.1247 0.5735 -1.5319 -0.8353 -0.4097 -1.3167 1.7274 -0.3101 -0.4680 0.0488 0.5104 -0.5825 -0.3463 -1.4754 -1.3549 … ]} {[ 0.6827 -0.3138 -0.7544 -2.0646 0.8569 -0.4641 -0.0817 -0.2468 0.0918 0.2039 1.7584 0.4713 -0.0365 0.0734 1.0328 0.0663 -0.3027 -0.1675 -1.0524 -0.0111 0.7884 -1.6948 -1.2475 -1.2604 -1.8228 1.0890 0.3902 0.0135 … ]}
You can do this:
qdd_matrix = NaN(numel(qdd),N_iterations);
for jj = 1:N_iterations
for indx = 1:numel(qdd)
qdd_matrix(indx,jj) = randn();
end
end
disp(qdd_matrix);
Columns 1 through 22 -2.1150 -1.2348 0.9292 -1.0466 0.0433 0.6537 -0.5743 1.5840 0.5644 -1.0570 0.3420 -1.5404 -0.1146 1.2409 1.0188 1.1134 0.1178 -1.4640 -0.8415 -0.7508 0.1603 0.6251 0.2291 -0.4691 -0.6938 -0.9004 -0.1304 -1.6158 0.3462 0.0924 0.5912 -0.5214 -0.8440 -0.7224 1.4801 0.1292 -0.5733 0.1301 -0.0957 2.2561 1.1594 1.3208 -0.7286 1.6529 0.9144 0.0766 -1.4980 0.4476 1.0194 -1.0746 -0.1578 -1.9101 0.4913 -0.7782 0.4552 -1.4068 -0.3081 -1.5103 -0.4787 -0.2321 1.4489 -0.7285 0.0333 0.7718 0.6036 0.6451 0.1516 -0.8545 -1.7877 1.8617 1.2383 -0.5886 -0.6822 0.7587 0.9764 0.2486 -0.8648 -0.6014 0.1770 -0.8365 0.1741 1.3796 0.7802 -0.5137 0.7908 0.4076 0.2563 -0.6937 0.6228 0.7938 -0.0501 -1.6762 -0.1991 -0.4979 -2.0716 -0.3895 0.4143 0.0009 1.2718 -0.5522 -0.6777 0.1095 0.2123 1.1560 0.8160 -1.4190 -0.6498 -1.7572 -1.5819 -0.4839 -1.5969 1.6190 -1.1820 0.8032 0.1683 -0.5896 -0.8892 -1.8902 -2.8493 -1.7496 0.1985 -2.3295 0.9767 -1.4918 -0.3436 -0.4942 0.5727 0.7649 0.5417 -0.5040 -0.9051 1.9272 Columns 23 through 44 1.1653 -1.5050 0.1995 1.5419 0.9729 -0.1748 -0.1478 -0.2871 -0.5201 -1.9360 0.0029 -0.0855 0.6906 0.5626 -0.0357 0.1421 -0.7448 0.9392 0.3399 -0.8960 -1.0805 1.0545 1.2576 -0.3041 1.1289 -0.7453 0.9692 -0.2980 0.9635 0.8867 -0.3714 0.2878 0.8496 -0.9332 0.2838 -0.8079 0.0897 1.8997 0.9894 -0.6837 -0.5924 -0.3025 0.1638 0.8526 -1.0075 -1.3231 -1.4752 0.9485 -0.2493 0.3257 -0.2919 0.4093 0.0534 -0.0797 0.1167 2.0805 0.1490 -1.5117 -0.4243 -0.1472 0.0891 0.7442 0.1935 -1.0764 -0.0834 0.6888 0.2471 -0.5945 -1.5464 1.2730 0.5871 -1.8472 -0.0759 0.8716 0.2530 0.4055 -0.3894 1.2459 -0.5138 -0.1815 -0.7127 1.0157 -1.3347 0.0343 -0.4816 -0.9803 -1.5198 -0.7442 -1.2696 -0.4877 1.0498 -1.6611 -2.1780 -0.7519 -0.0573 1.8737 -0.5333 0.6133 0.0551 -0.1731 0.9421 0.5260 0.4575 -1.6644 -0.2699 -0.3135 -0.4243 2.5099 -0.7946 -0.7059 -1.3087 0.9230 -0.5398 -1.0544 0.4877 1.8475 -0.0171 1.5016 0.6639 -2.0277 0.9118 -1.6037 0.1726 -0.2693 -1.6754 0.3091 -0.4914 0.4172 0.1470 1.5454 -0.9659 -0.3808 Columns 45 through 66 -0.2427 0.6006 0.7881 0.1452 -0.2661 0.8255 0.7855 0.2592 0.1963 0.0686 0.6204 -0.0825 -2.7009 0.5087 -0.7471 0.6285 0.8582 0.3182 0.4012 0.5414 -0.4635 -0.8297 -0.8376 -0.6327 -1.7207 0.2507 -2.2007 0.2470 -1.4210 0.9207 -0.9699 -0.1680 0.3564 -0.2788 -0.0111 0.4384 1.1022 -0.9073 -1.5230 -0.4111 0.9419 -0.8387 -1.1460 1.2086 2.0568 -0.2750 0.0769 0.0925 -0.0499 0.5940 -0.1154 -1.2031 -1.8675 -0.7579 -0.0921 -0.0010 0.6037 0.1765 0.0018 0.5480 -0.0300 1.3002 -0.3101 0.6420 -0.0104 -0.5437 1.0293 0.5553 0.2856 0.7490 0.7516 0.8262 1.4713 -0.3601 0.4403 0.8954 -0.6730 0.6993 -0.8034 0.7322 0.1828 0.6300 0.8411 0.8548 -0.5231 1.9126 -0.1628 1.8854 -1.4363 0.3748 -0.4122 0.0668 0.4038 3.2295 1.8983 -0.4170 -1.7229 -1.3898 -1.4574 -0.5795 -1.0599 -0.6753 0.7388 0.5745 0.4388 -0.2170 -0.0276 -1.1328 1.3301 -0.4120 1.1222 1.6037 -0.9076 -2.0337 -0.0425 0.9924 0.5339 -0.9943 0.4461 0.0593 0.4277 1.6696 -1.1686 -0.9353 -1.0913 0.4382 -0.5750 -0.1822 -1.5486 -1.3129 -0.7827 -0.4636 Columns 67 through 88 1.5375 -0.6172 0.7630 1.4582 0.4960 1.0441 0.1139 0.8479 0.8904 -0.0655 0.5224 0.3396 0.4863 0.4904 0.4259 -1.1700 0.9905 0.7595 0.4921 -0.0377 -0.7438 0.2945 -1.7675 0.0912 -0.7481 -1.8178 2.2909 -0.9219 -0.3296 1.4905 -0.5049 0.3704 -1.0991 0.0010 -0.5068 0.2767 0.0557 1.7974 -0.4277 -0.4161 -1.5677 0.3072 0.4226 1.2113 1.8291 0.4297 -0.0395 0.7116 -0.3161 0.2870 -1.6942 0.2283 -0.6939 1.9671 0.9813 1.2012 0.8428 -1.2425 0.2013 -0.9363 -0.5069 -1.0491 2.1922 -0.9870 1.2962 0.1695 0.6201 -2.1203 0.9199 -0.4952 0.5098 -0.3206 1.0467 0.4606 -1.3862 1.7105 -0.4254 -0.3584 -0.4277 0.2223 0.7250 0.5416 0.5245 -0.7529 1.0604 0.0063 -1.1043 -0.3598 0.3082 -1.2486 -0.6466 0.5877 0.8581 -1.6631 1.4379 0.2711 -0.9368 0.2604 -1.0279 -0.6419 1.3876 -0.7034 0.4954 -1.3502 -1.2316 0.3003 0.4692 0.0975 -0.8908 0.3189 0.8925 -1.0722 -0.4349 1.5501 -0.3177 0.9701 -0.7283 -0.0149 1.7196 -1.2338 -0.1987 0.3414 0.4321 0.4417 0.0913 -1.4343 0.2452 -1.1739 -1.5984 -1.4487 1.5659 -0.4672 Columns 89 through 100 -2.2876 0.8133 -1.3842 0.8663 -0.2993 0.5435 -0.5635 -0.8349 -1.1232 0.0470 0.6798 -0.5021 -1.8427 -1.1277 -0.4006 -0.6520 -1.3521 0.0526 -0.6934 0.7613 0.9519 -0.9534 -1.3110 -0.4334 0.1553 0.1519 1.0008 -0.0929 -1.4677 1.8407 -0.7559 0.2547 -0.5550 2.5657 -0.8447 -0.5390 -0.8529 0.1275 -0.2916 -0.5304 -0.4930 2.2017 -1.4175 0.2243 -1.2064 0.0160 1.1907 -0.2501 0.7980 -0.2192 0.0178 -1.2111 1.0719 -0.5097 1.7664 0.8944 -0.5343 -0.3339 -0.7654 -0.6763 -0.6831 -0.8456 0.1670 -0.5257 0.7193 -0.9483 -0.3974 0.0385 -2.3019 0.4462 -0.2525 -1.1134

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by