Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/103: Рейтинг темы: голосов - 103, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147

Инициализация массива

19.04.2014, 16:01. Показов 18963. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Сегодня первый день моего знакомства с Матлабом, поэтому хочу задать примитивные вопросы. Книги не прояснили всех сомнений, к сожалению.

Мне надо создать несколько массивов.

Про один из массивов я знаю его размерность и шаг, т е разницу между последующим и предыдущим элементом.
Я могу его задать вот так:
mass1=0:shag:100;
как я могу обратиться к любому элементу этого массива в цикле? Например, присвоить какое-то значение?
Так?
Matlab M
1
mass1(i)=z;
Вопрос про второй массив. Мне нужен пустой массив определенной размерности, который бы заполнялся по ходу цикла.
т.е. вот аналог на C++ :
C++ (Qt)
1
2
3
 int x[m]
for(i=1;i<d;i++)
{x[i]=s};
Можно ли в Matlab задать массив как
Matlab M
1
 mass2=x(m);
Надо ли объявлять его тип как в С++?

Почему-то во многих литературных источниках массивы задаются с клавиатуры.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2014, 16:01
Ответы с готовыми решениями:

инициализация массива, вывод массива и обработка массива должны быть реализованы с помощью функций.
1 Последовательность a1; a2; ...; an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы. 2 У...

Перевод массива комплексных чисел в массив float. Инициализация двумерного массива
Здравствуйте! Начал осваивать python и никак не могу разобраться. Есть массив list, состоящий из n числа строк и 2048 столбцов, значения в...

Инициализация массива
У меня есть входной файл, там число 0&lt;j&lt;100000; int мне не подходит, т.к. больше 32656. значит делаю long j. Пишу String m = new...

9
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 254
19.04.2014, 18:55
Цитата Сообщение от enotik Посмотреть сообщение
как я могу обратиться к любому элементу этого массива в цикле? Например, присвоить какое-то значение?
Так?
Код Matlab M
1
mass1(i)=z;
да

Цитата Сообщение от enotik Посмотреть сообщение
Вопрос про второй массив. Мне нужен пустой массив определенной размерности, который бы заполнялся по ходу цикла.

т.е. вот аналог на C++ :
Matlab M
1
x=[];
Цитата Сообщение от enotik Посмотреть сообщение
Можно ли в Matlab задать массив как
вопрос не понятен.... Объявлять типы не надо.
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
20.04.2014, 17:02  [ТС]
Спасибо!
Есть еще вопрос ,подскажите пожалуйста, после нескольких преобразований массивов в цикле, мне надо построить график от массива. Я использую функцию plot, но график не строится, ошибки в окне команд не выдаются, а только пишется
ans = 1.

Каковы причины?
Вложения
Тип файла: rar 1.rar (980 байт, 8 просмотров)
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 254
20.04.2014, 18:16
Цитата Сообщение от enotik Посмотреть сообщение
Каковы причины?
никогда не называй матлабовский файл цифрой. Название должно начинаться с латинской буквы. Но у тебя там других ошибок в коде много, я исправлять не стал, так как не знаю, что именно ты там считаешь.
0
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
20.04.2014, 18:19  [ТС]
Но у тебя там других ошибок в коде много, я исправлять не стал, так как не знаю, что именно ты там считаешь.
А в каких местах ошибки?
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 254
20.04.2014, 19:05
запусти программу, она сама укажет тебе на ошибки, и исправляй их по порядку
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
20.04.2014, 19:20  [ТС]
Спасибо)
а вот такой вопрос
у меня написано:
Matlab M
1
2
if(i>m) 
z=array_z(i-m);
А он выдает ошибку "Attempted to access array_z(0.9995); index must be a positive integer or
logical" - Индекс должен быть положительным числом.
Но ведь в условии If написано в каких случаях производить вычитание и в этих случаях индекс будет имеено положительным числом. Чего ему непонятно?)

Добавлено через 6 минут
Можно как-то посмотреть сразу все ошибки, а не по одной?))
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 254
20.04.2014, 19:47
Цитата Сообщение от enotik Посмотреть сообщение
Можно как-то посмотреть сразу все ошибки, а не по одной?))
на сколько я знаю, нет.

Цитата Сообщение от enotik Посмотреть сообщение
А он выдает ошибку "Attempted to access array_z(0.9995); index must be a positive integer or
видимо у тебя m=0.0005, поэтому а должно быть целым.
0
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
20.04.2014, 20:04  [ТС]
видимо у тебя m=0.0005, поэтому а должно быть целым.
Нет,задано, что
Matlab M
1
m=1000


Добавлено через 11 минут
вот так не работает:
Matlab M
1
2
3
4
m=1000;
 
if(i>m) 
z=array_z(i-m);
А вот так работает

Matlab M
1
2
if(i>1000) 
z=array_z(i-m);
Интересно девки пляшут))))
0
120 / 113 / 30
Регистрация: 29.03.2012
Сообщений: 254
21.04.2014, 11:49
Matlab M
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
clear all;
clc;
 
%Исходные данные
 
m = 1000; %число точек
n = 10; %число оборотов
syms x z xnew znew i;  %объявление символьных переменных
p = 1000;  %частота (Гц)
w = 0.1*p;
R = 20;    %радиус образца(мм)
Vokr = w/R; %линейная скорость в окружном направлении
t1 = 2*pi*R/Vokr; %время полного поворота (на 2Pi)
f = 0.1; %подача (мм/об)
Vos = f/t1; %скорость в осевом направлении
Krez = 1000; %коэффициент жесткости  (МПа)
K = 500; % задаемся
b = 0.1*R; %ширина резания
delt = t1/m; %шаг времени на первом обороте (на всех оборотах)
m = K/p^2; %масса резца
 
%Создаем массивы
 
t=0:delt:t1*n; %массив времени
array_z = [m*n+1]; %Почему подчеркивает скобку(как задавать массивы)?
array_x = [m*n+1];
array_h = [m*n+1]; %не нужен
 
%Цикл вычисления смещений
 
x = 0; z = 0;  % в начальный момент времени
 
for i=1:1:(m*n+1)
    if (-x>z) %Если инструмент вышел
        h=0;
        z=z;
    elseif (-x<z)
        h=z+x;
        array_h(i)=h; %-
        z=-x;
    else h=0;
    end;
    if(i>m) %Если оборот не первый,
        z=array_z(i-m); %тогда ищем значение z в этой точке на предыдущем обороте
    else z=z;
    end;
    znew = z+Vos*delt;
    z=znew;
    array_z(i)=z;
    Frez = -Krez*b*h;
    if (i>m)
        x=array_x(i-m);
    else
        x=x;
    end;
    V_mgn = x/delt;
    xnew = x*cos(p*delt)+V_mgn/p*sin(p*delt)+Frez/(m*p)*2*(sin(p*delt/2))^2/p;
    x=xnew;
    array_x(i)=x;
end;
figure
plot(t,array_x);
в 20-ой строке у тебя m пересчитывается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2014, 11:49
Помогаю со студенческими работами здесь

Инициализация массива
Стоит задача заполнить массив данными типа String. Но при выводе массив заполнен по умолчанию null. Почему так происходит и как правильно...

Инициализация массива
Есть массив: int d; Есть константа бесконечности (просто константа) inf, равная 2^30. Я попытался проинициализировать массив этой...

Инициализация массива
int a; // compile time инициализация. for (int i = 0; i &lt; 10; ++i) a = 0; // присваивание int a {0} // compile time...

Инициализация массива
Нужно объявить несколько статических строк, содержащих байты со значениями в диапазоне от 1 до 255 Пытаюсь что-то в этом духе: ...

Инициализация массива
Заполнить массив из двенадцати элементов следующим образом: 1,2 ... 12


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru