필터 지우기
필터 지우기

Error: Assignment has more non-singleton rhs dimensions than non-singleton subscripts

조회 수: 1 (최근 30일)
clear all; clc; close all
rho_sea=1027;
rho_air=1225;
g=9.8;
k=0.4;
alpha=0.008;
gamma=3.3;
delta_1=0.07; % if f<=fp
delta_2=0.09; % if f>fp
Tp=[2 10 16];
fp=1./Tp;
T=2:1:16;
f=1./T;
u= [1.192 1.194 1.120];
z=[0.0021 0.0029 0.0033];
sigma= 2*pi*f;
k_nw=sigma.^2./g;
i_freq=1:69;
f1=0.03093;
c=1.1;
for i = 1:length(i_freq)
fi=f1.*c.^(i_freq-1);
end
i_teta=1:36;
teta_i=10.*i_teta;
%%% T=2s
%mi
mi = zeros(numel(teta_i),numel(sigma));
for i=1:length(sigma)
for j=1:length(teta_i)
mi(j,i)=(((g*z(1,1).*(k_nw(i).^2))./sigma(i).^2).*exp((k*sigma(i))./(k_nw(i).*u(1,1)).*cos(teta_i(j))));
end
end
% mp
mp=(1.2./k).*mi.*log(mi).*log(mi).*log(mi).*log(mi);
%beta
beta= zeros(numel(teta_i),numel(T));
Cf=(g.*T)./(2.*pi);
for i=1:length(T)
for j=1:length(teta_i)
beta(j,i)=(rho_air./rho_sea).*mp.*((u(1,1))./(Cf)).^2.*(1+cos(teta_i(j).*2)./2);
end
end
I'm having trouble (in the third row from the bottom up):
beta(j,i)=(rho_air./rho_sea).*mp.*((u(1,1))./(Cf)).^2.*(1+cos(teta_i(j).*2)./2);
The error message appears: "Assignment has more non-singleton rhs dimensions than non-singleton subscripts"
The code is above and below has the formulas (I started from the bottom up).
Thanks for the help

채택된 답변

Alan Stevens
Alan Stevens 2020년 11월 1일
In line
beta(j,i)=(rho_air./rho_sea).*mp.*((u(1,1))./(Cf)).^2.*(1+cos(teta_i(j).*2)./2);
you should have
beta(j,i)=(rho_air./rho_sea).*mp(j,i).*((u(1,1))./(Cf(i))).^2.*(1+cos(teta_i(j).*2)./2);
| | |

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by