### matlabでの3次元plot
二自由のインパルス応答の畳み込み結果を3次元でplotしようとした際に,エラーメッセージが
出てしまいます.
エラーメッセージの解決方法がわかる方おられましたらよろしくお願いいたします.
発生している問題・エラーメッセージ
該当箇所
hp = plot3(ActiveAIdx,t,conv_X(ActiveAIdx,:));
エラーメッセージ
ベクトルは同じ長さでなければなりません.
該当のソースコード
function [ output_args ] = 2dof_A( )
cKeyName = '2dof_pch_A'; %モデルデータ名
% InputGrid = 11;
% InputDir = 2;
% Initial condition
U0 = [0.0; 0.0];
V0 = [0.0; 1.0e-4];
src = load([cKeyName, '.mat']); %モデルデータ
bdf = src.bdf;
A = src.A;
ActiveADispIdx = src.ActiveADispIdx(:)';
ActiveAVeloIdx = src.ActiveAVeloIdx(:)';
ActiveAIdx = [ActiveADispIdx(:); ActiveAVeloIdx(:)]';
dof = 2; %自由度
tstep = get_tstepsub(bdf.CaseCtrl.tstep, bdf.BulkData);
iNumStep = tstep(2);
dt = tstep(3);
if abs(src.dt - dt) > eps
error('Unknown Error');
end
% dt = (1/EigenFreq(end))/10;
t = 0:dt:dt*(iNumStep - 1);
X = zeros(2dof, iNumStep);
X( 1: dof, 1) = U0;
X((dof + 1):2dof, 1) = V0;
% solve %インパルス応答計算
A0 = A(ActiveAIdx, ActiveAIdx);
for ii1 = 1:(iNumStep - 1)
X(ActiveAIdx, ii1 + 1) = A0*X(ActiveAIdx, ii1);
end
%% convolution %畳み込み積分
F = 5cos(7t); %調和外力
conv_X = zeros(2*dof, iNumStep);
tic
for ii1 = 1:iNumStep
conv_S = X(ActiveAIdx, :)*F(1,ii1);
conv_X(ActiveAIdx, ii1:end) = conv_X(ActiveAIdx, ii1:end) + conv_S(ActiveAIdx, 1:(iNumStep - ii1 + 1));
end
toc
ActiveADispIdx = ActiveADispIdx(1:2:end);
figure(101); hold on
hp = plot3(ActiveADispIdx,t,conv_X(ActiveADispIdx,:)); %問題箇所
disp('finished')
試したこと
同一面上で plot(t,conv_X(ActiveADisdIdx,:));
の描画はできました.
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。