Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
1
Matlab 2014

Ошибка: Subscripted assignment dimension mismatch. Почему ?

20.06.2018, 10:55. Показов 8860. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
m-file1

Matlab M
1
2
3
4
function z=Bz(x0,y0,a,h,N)
psi=0:pi/50:2*pi*N;
F=f(psi,x0,y0,a,h);
z=trapz(psi,F);
m-file2

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
function F=f(psi,x0,y0,a,h)
Nx=length(x0);
Ny=length(y0);
for i=1:Nx
    s=0;
    for j=1:Ny      
        s=s+((y0(j)-a*sin(psi))*a.*sin(psi)+a*cos(psi).*(x0(i)-a*cos(psi)))./...
(x0(i)^2+y0(j)^2+a^2+(h/(2*pi)*psi).^2-...
2*(x0(i)*a*cos(psi)+a*y0(j)*sin(psi))).^(3/2);
     end;
       M(i,j)=s;
end;
F=M;
код программы:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
N1=21;
i=1:N1+1;
j=1:N1;
x0min=0; y0min=0;
x0max=5; y0max=5;
x0(i)=x0min+(x0max-x0min)/N1*(i+1);
y0(j)=y0min+(y0max-y0min)/N1*(j+1);
a=1;
h=0.1;
N=1;
[x01,y01]=meshgrid(x0,y0);
mp=Bz(x0,y0,a,h,N);
contourf(x0,y0,mp,50);
Ошибки:
>> Test2
Subscripted assignment dimension mismatch.

Error in f (line 11)
M(i,j)=s;

Error in Bz (line 4)
F=f(psi,x0,y0,a,h);

Error in Test2 (line 13)
mp=Bz(x0,y0,a,h,N);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2018, 10:55
Ответы с готовыми решениями:

Ошибка In an assignment A(:) = B, the number of elements in A and B must be the same
На картинке кусок скрин куска программы, вычисляется вероятности pm на некоторых интервалах. Не...

Почему ошибка type mismatch?
Код класса Member: ' Member's name Private pName As String ' Member's color Private pColor As...

Ошибка: subscripted value is neither array nor pointer
ввожу: scanf("%d" & min); даёт ошибку: subscripted value is neither array nor pointer .

Почему type mismatch?
Есть у меня форма gameForm, и есть на ней 9 кнопок, при клике на которые выполняются одинаковые...

12
6890 / 4940 / 2086
Регистрация: 02.02.2014
Сообщений: 13,126
20.06.2018, 11:01 2
Цитата Сообщение от khiggs2013 Посмотреть сообщение
M(i,j)=s;
это должно быть внутри цикла

Добавлено через 49 секунд
на форуме есть теги matlab [MATLAB ] [ /MATLAB] - четвертый справа в первом ряду
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
21.06.2018, 12:35  [ТС] 3
Ребята, кто может подсказать что сделать с этим?
0
Модератор
Эксперт по математике/физике
5272 / 4054 / 1389
Регистрация: 30.07.2012
Сообщений: 12,429
21.06.2018, 13:26 4
khiggs2013, а вот что...
Цитата Сообщение от khiggs2013 Посмотреть сообщение
M(i,j)=s;
это должно быть внутри цикла
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
21.06.2018, 13:46  [ТС] 5
Дык я её внутрь цикла и помещал, то есть выше end , но результата то нет
0
Модератор
Эксперт по математике/физике
5272 / 4054 / 1389
Регистрация: 30.07.2012
Сообщений: 12,429
21.06.2018, 13:52 6
khiggs2013, а ничего, что там есть еще один, вложенный цикл?
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
21.06.2018, 13:55  [ТС] 7
Дак что сделать то технически надо?
0
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
21.06.2018, 15:22 8
Цитата Сообщение от khiggs2013 Посмотреть сообщение
Дык я её внутрь цикла и помещал, то есть выше end , но результата то нет
Конечно присвоение
M(i,j)=s;
должно быть выше еще одного end судя по индексу j, однако проблема в другом.
У Вас s получается массивом 1х101, из-за того что psi массив. И тут надо разбираться что Вы там и как интегрируете. Мне физика Вашей задачи неизвестна.
Из синтаксиса MATLABa возможно поставить присвоение
Matlab M
1
M{i,j}=s;
Однако перед интегрированием надо разбираться что с полученными данными делать.
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
22.06.2018, 00:19  [ТС] 9
Цитата Сообщение от SSC Посмотреть сообщение
У Вас s получается массивом 1х101,
А не могли бы вы пояснить как вы подсчитали массив что размерность его 1 на 101?
0
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
22.06.2018, 08:18 10
Цитата Сообщение от khiggs2013 Посмотреть сообщение
как вы подсчитали массив что размерность его 1 на 101?
Вот эта строка
Цитата Сообщение от khiggs2013 Посмотреть сообщение
Matlab M
1
psi=0:pi/50:2*pi*N;
дает 101 элемент.
Но можно и не считать, а просто в отладчике поставить точку останова, и посмотреть размер массива
0
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
22.06.2018, 19:20  [ТС] 11
Цитата Сообщение от SSC Посмотреть сообщение
дает 101 элемент
Ага. понял. Ну скорее наверное 101*N так как N в моей задаче это число витков соленоида.
Дело в том, что все должно там вроде бы работать(где происходит интегрирование). Выражение
Цитата Сообщение от SSC Посмотреть сообщение
1
psi=0i/50:2*pi*N;
определяет в функции
Цитата Сообщение от khiggs2013 Посмотреть сообщение
z=trapz(psi,F)
пределы интегрирования, как я понял из: http://old.exponenta.ru/soft/m... /trapz.asp

Вообщем в моей задаче нужно взять например M(5, 6) (ну вот это:
Цитата Сообщение от khiggs2013 Посмотреть сообщение
M(i,j)=s;
) и проинтегрировать его от 0 до 2*pi*N. Далее вынести на сетку по X=5, а по Y=6. И так перебрать каждый i и j.
0
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
22.06.2018, 21:38 12
Лучший ответ Сообщение было отмечено khiggs2013 как решение

Решение

Сущность проблемы мне не понятна, но возможно надо проводить интегрирование сразу перед присвоением
M(i,j)=s;
и в массиве хранить уже результаты интегрирования
1
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 10
23.06.2018, 17:02  [ТС] 13
Спасибо за помощь SSC!
Все таки надо было сначала интегрировать а потом уж перебирать по i , j.
Ответ получил в виде вот такого распределения. Это компонента по z магнитного поля однослойного соленоида рассчитанная по закону Био Савара в плоскости z-y.
Миниатюры
Ошибка: Subscripted assignment dimension mismatch. Почему ?  
0
23.06.2018, 17:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2018, 17:02
Помогаю со студенческими работами здесь

Непонятно почему type mismatch
Кусок кода: 'Определяем значение последней активной чейки Dim iLastRowYou As Long ...

Ошибка компиляции "Subscripted value is neither array nor pointer nor vector"
Может кто-нибудь может привести минимальный код, который компилировался бы со следующей ошибкой: ...

Ошибка Assignment to FOR-Loop variable
for ko := 0 to 3 do begin ko:=ko*4; for i:=ko to ko+3 do ...

Ошибка Null pointer assignment
Помогите, пожалуйста, кто знает. BC++ 3.11 выдает 'Null pointer assignment'. Я, в принципе, в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru