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

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

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

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

Q&A

解決済

2回答

2189閲覧

for文使用中のエラーについて(MATLAB)

MT1111

総合スコア6

MATLAB

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

0グッド

0クリップ

投稿2019/11/15 16:39

前提・実現したいこと

プログラミング初学者です.MATLABを用いて日単位の値を時間単位の値に変換するシステムを作っています.for文を使用して365×1のデータを8760×1のデータに変更しようとした際に以下のエラーメッセージが発生しました.

発生している問題・エラーメッセージ

左辺のインデックスが右辺とサイズが適合しないため、代入は実行できません。

該当のソースコード

MATLAB

1%ファイル読み込み 2sm_2010_day=xlsread('snowmelt_2010.xlsx','C1:C365'); 3 4sm_2010_hr=sm_2010_day/24;%日単位値/24 5 6for n=1:365 7A(n)= repmat(sm_2010_hr(n),24,1); 8end 9 10B= vertcat(A(n))%行列結合 11 12

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

MATLABは、大抵の場合、ベクトルや行列を丸ごと操作できます。今回の場合も、forを使う必要はありません。

MATLAB

1%ファイル読み込み 2sm_2010_day=xlsread('snowmelt_2010.xlsx','C1:C365'); 3 4sm_2010_hr=sm_2010_day/24;%日単位値/24 5 6A = repmat(sm_2010_hr,24,1); 7 8B = reshape(A, 1, 24*365);

小さなデータ(3日分のデータを、6時間ごとに分ける)で試してみると

MATLAB

1>> data=1:3 2data = 3 1 2 3 4>> A = repmat(data, 4, 1) 5A = 6 1 2 3 7 1 2 3 8 1 2 3 9 1 2 3 10>> B = reshape(A, 1, 4*3) 11B = 12 1 1 1 1 2 2 2 2 3 3 3 3

投稿2019/11/15 20:18

Bearded-Ockham

総合スコア430

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

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

MT1111

2019/11/16 13:54

ご回答ありがとうございます。 複数のデータを扱う際は、for文を使わなければならないという思い込みがあったようです。
guest

0

Matlabで配列の配列を作ることはできない気がします。
配列の配列を作ると考えるのではなく、2次元配列を最初から作れば良いと思います。結果vertcatする必要もなくなります。
ある行や列全体を取り出す時は、":"を使います。
配列インデックス付け (Matlab公式)

Matlab

1sm_2010_day=xlsread('snowmelt_2010.xlsx','C1:C365'); 2sm_2010_hr=sm_2010_day/24;%日単位値/24 3%A=zeros(24,365); 4for n=1:365 5 A(n,:)=sm_2010_hr; 6end 7 8%B= vertcat(A)%行列結合

投稿2019/11/15 17:30

aoies

総合スコア331

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

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

MT1111

2019/11/16 13:58

配列インデックスに関するホームページのURLまで貼っていただき、ありがとうございます。大変勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問