как исправить размеры матрицы должны согласовываться - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь построить Z0 в терминах t Я получаю эту ошибку Размеры матрицы должны совпадать.Я знаю, что «T» является скаляром, а «X» и «Y» являются матрицами (51x26), а «t» является вектором (1x501). Их невозможно умножить, поскольку они не соответствуют матрицеумножение Мне нужно решение, пожалуйста, я новичок в MATLAB

sigma0=0;
el= 0.5;
L= 1 ;
h= 0.5 ;
a= 1;
N= 3;
g=10;
rho=1000;
Z0=0;
t=0:0.01:5;
x=0:0.02:el;
y=0:0.02:L;
[X,Y]=mesh grid (x,y);
sigma=0;
T=3*pi/4;
for n=0:N
    for m=0:N
        A=pi*((m/el)^(2)+(n/L)^(2))^(0.5);
        B=(g*A+(sigma/rho)*A^3)*atan(A*h);
        C=B^(0.5); 
        Z=a*cos(C.*T).*cos((m*pi/el).*X).*cos((n*pi/L).*Y);
        Zs=Z0+Z;
        Z0=Zs;

    end
end
  m=3;
  n=4;

A=pi*((m/el)^(2)+(n/L)^(2))^(0.5);
B0=(g*A+(sigma0./rho)*A^3)*atan(A*h);
C0=(B0.^(0.5)); 
Z0=(a.*cos(C0.*T)).*cos((m*pi/el).*X).*(cos((n*pi/L).*Y));
figure
subplot(221)
plot(t,length(Z0));
xlabel(' temps s');
ylabel(' élévation z(x,y)y');
title(' sans tension superficielle');
legend('sigma0') 

В результате я ожидаю увидеть синусоидальную фигуру

1 Ответ

0 голосов
/ 26 июня 2019

Я думаю, все, что вам нужно, это заменить plot(t,length(Z0)); на plot(1:length(Z0), Z0);

Я не получаю сообщение об ошибке, и я не вижу, где вы пытаетесь умножить на t.
Выполните clear all на всякий случай ...

Кроме того, вы опубликовали синтаксическую ошибку [X,Y]=mesh grid (x,y); должно быть [X,Y]=meshgrid (x,y);.

Заменить plot(t,length(Z0));
На: plot(1:length(Z0), Z0);

Вот результат:

Subplot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...