Tôi muốn tạo một mảng hoặc vectơ ghi chú bằng vòng lặp for. Mỗi nốt A, A#, B, C... v.v. là tỷ lệ 2^(1/12) của nốt trước/nốt tiếp theo. Ví dụ: nốt A là 440Hz và A# là 440 * 2^(1/12) Hz = 446,16Hz.
Bắt đầu từ 27,5Hz (A0), tôi muốn một vòng lặp lặp lại 88 lần để tạo một mảng với mỗi tần số nốt lên tới 4186Hz, vì vậy nó sẽ trông giống như
f= [27,5 29,14 30,87 ... 4186,01]
Cho đến nay tôi đã hiểu điều này nhiều:
f = [];
với i=1:87,
%những gì diễn ra ở đây
% f = [27,5 * 2^(i/12)];
end
return;
Không cần phải tạo vòng lặp cho việc này trong matlab, bạn chỉ cần thực hiện:
f = 27,5 * 2.^((0:87)/12)
答案:
f =
Cột 1 đến 13
27,5 29,135 30,868 32,703 34,648 36,708 38,891 41,203 43,654 46,249 48,999 51,913 55
Cột 14 đến 26
58,27 61,735 65,406 69,296 73,416 77,782 82,407 87,307 92,499 97,999 103,83 110 116,54
Cột 27 đến 39
123,47 130,81 138,59 146,83 155,56 164,81 174,61 185 196 207,65 220 233,08 246,94
Cột 40 đến 52
261,63 277,18 293,66 311,13 329,63 349,23 369,99 392 415,3 440 466,16 493,88 523,25
Cột 53 đến 65
554,37 587,33 622,25 659,26 698,46 739,99 783,99 830,61 880 932,33 987,77 1046,5 1108,7
Cột 66 đến 78
1174,7 1244,5 1318,5 1396,9 1480 1568 1661,2 1760 1864,7 1975,5 2093 2217,5 2349,3
Cột 79 đến 88
2489 2637 2793.8 2960 3136 3322.4 3520 3729.3 3951.1 4186
Tôi là một lập trình viên xuất sắc, rất giỏi!