私はMatlabの初心者であり、Excelで簡単に実行できる簡単なタスクの実行方法に困惑しています。マトリックス内のセル間の変化率を取得しようとしているだけです。このタスクのforループを作成したいと思います。データは次の形式で設定されます。
DAY1 DAY2 DAY3...DAY 100
被験者の結果
2つのデータポイント間の変化率の取得しか実行できませんでした。複数の日と複数の科目にまたがる場合、どのように実施しますか?そして説明をお願いします
本当にありがとう
たとえば、1日目のSUBJECT1(RESULT = 1)、SUBJECT2(RESULT = 4)、SUBJECT3(RESULT = 5)、2日目のSUBJECT1(RESULT = 2)、SUBJECT2(RESULT = 8)、SUBJECT3(RESULT = 10)、 3日目SUBJECT1(RESULT = 1)、SUBJECT2(RESULT = 4)、SUBJECT3(RESULT = 5)。パーセントの変更が必要なので、出力は2日目のSUBJECT1(RESULT = 100%)、SUBJECT2(RESULT = 100%)、SUBJECT3(RESULT = 100%)になります。DAY3 SUBJECT1(RESULT = 50%)、SUBJECT2(RESULT = 50%)、SUBJECT3(RESULT = 50%)
更新しました:
こんにちは、みんなに答えてくれてありがとう。混乱させて申し訳ありません。zebediah49は私が探しているものにかなり近いです。私のデータは、たとえば10x10のdoubleです。列ごとの変化率を取得したかっただけです。たとえば、すべての列(列2:10から)の行1から10へのパーセンテージの変更が必要な場合。コードを任意の行列次元(たとえば、1000 x 1000ダブル)で機能させたいです。zebediah49投稿したコードについて説明していただけますか?ありがとう
update2:zebediah49、
(data(1:end、100)-data(1:end、99))./ data(1:end、99)
output = [data(:、2:end)-data(:、1:end-1)] ./ data(:、1:end-1)* 100;
上記のコードを観察して、列100が他のすべての列(1-99)に対するインデックスとして使用されるように、どのように変更しますか?コードを次のように変更した場合:
(data(1:end、100)-data(1:end、:))./ data(1:end、:)
行列の次元を超えているため、matlabはできません。どうすればそれを実装できますか?
更新3
zebediah49、
完璧に動作しました!!! もともと私はインデックスの新しい変数を作成し、行列に一致するようにインデックスをrepmatしましたが、これは良い考えではありませんでした。多数を処理する場合、複製するのに永遠に時間がかかりました。もう一度貢献していただきありがとうございます。
クリスもあなたの貢献に感謝します!!! マトリックス内の配列をアドレス指定して操作する方法についてもっと調べていました。