質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

2回答

1042閲覧

matlabでの3次元plotのエラーメッセージ解決

snakehips0909

総合スコア1

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/09/16 03:15

編集2020/09/17 04:47

### 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):2
dof, 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/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

yだけベクトル転置させて、解決しました

投稿2020/10/16 11:04

snakehips0909

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ActiveAIdx,t,conv_X(ActiveAIdx,:)
それぞれのsizeを計算すれば原因を特定できるはずです。

投稿2020/10/01 15:31

WathMorks

総合スコア1582

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問