[問題]如何傳送字串(String)進入function

看板MATLAB作者 (我要吃好料)時間5年前 (2019/04/22 00:22), 編輯推噓5(5053)
留言58則, 3人參與, 5年前最新討論串1/1
我有兩個m file,A.m 和 B.m。A要用來給參數,B是function. A.m x=[a b c]; y={'desc1' 'desc2' 'desc3'}; Amax(x,y); B.m function Amat(x,y) dataset = xlsread('sale.xls'); x1=x'*x; xlswrite('result.xls',y); end 說明: 1. B file 會讀入data,總共有10個變數,但我們只要取用a, b and c 3個即可。 2. A file 指定x(matrix with a, b and c)和y(char)做為變數的名稱(for export)。 請問一下有人知道要如何在A給出x matrix傳送到B嗎?謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 74.77.73.213 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1555863778.A.77B.html

04/23 00:04, 5年前 , 1F
B的檔名是Amat嗎?
04/23 00:04, 1F

04/24 04:13, 5年前 , 2F
是的
04/24 04:13, 2F

04/24 04:14, 5年前 , 3F
sorry忘記說清楚~
04/24 04:14, 3F

04/24 09:46, 5年前 , 4F
那我不太懂你的問題在哪耶,function都設好了,你是想
04/24 09:46, 4F

04/24 09:46, 5年前 , 5F
為什麼阿?
04/24 09:46, 5F

04/24 09:46, 5年前 , 6F
問什麼啊?
04/24 09:46, 6F

04/25 00:37, 5年前 , 7F
我的問題出在A.m檔案裡指定的x傳入Amax.m(也就是B.m
04/25 00:37, 7F

04/25 00:37, 5年前 , 8F
)之後沒辦法被當成矩陣裡面的element.
04/25 00:37, 8F

04/25 00:38, 5年前 , 9F
謝謝
04/25 00:38, 9F

04/25 08:48, 5年前 , 10F
看不懂你問題 都寫好了傳進去不就好了 你可不可以貼一下
04/25 08:48, 10F

04/25 08:48, 5年前 , 11F
error code?
04/25 08:48, 11F

04/25 08:50, 5年前 , 12F
你x傳進B之後寫a=x(1);b=x(2);b=x(3);之類的就好了啊?
04/25 08:50, 12F

04/25 11:08, 5年前 , 13F
在B.m這個程序當中會先讀入data,才會有變數a,b and
04/25 11:08, 13F

04/25 11:08, 5年前 , 14F
c,然後才可以做矩陣運算X1。也就是說在A.m裡面沒
04/25 11:08, 14F

04/25 11:08, 5年前 , 15F
有任何data,A.m只負責指定需要進入矩陣運算的變數
04/25 11:08, 15F

04/25 11:08, 5年前 , 16F
。我要做的事情其實是在A.m當中指定多個矩陣,例如[
04/25 11:08, 16F

04/25 11:08, 5年前 , 17F
a c]或是[a b c d e],然後進入B.m去做運算然後得
04/25 11:08, 17F

04/25 11:08, 5年前 , 18F
到結果輸出report。在A.m中指定x=[a b c]會得到錯誤
04/25 11:08, 18F

04/25 11:08, 5年前 , 19F
訊息 "Cannot find an exact (case-sensitive) matc
04/25 11:08, 19F

04/25 11:08, 5年前 , 20F
h for 'a'",若寫成x='a b c'則不會有錯誤訊息,但
04/25 11:08, 20F

04/25 11:08, 5年前 , 21F
是這樣一來x就變成char,傳入B.m還是char而不是變
04/25 11:08, 21F

04/25 11:08, 5年前 , 22F
數,這樣就無法做運算了。
04/25 11:08, 22F

04/25 11:10, 5年前 , 23F
希望這次有把問題講清楚QQ
04/25 11:10, 23F

04/25 19:24, 5年前 , 24F
好像看懂你想幹嘛了,你是想用x指定xls的某些數值運算
04/25 19:24, 24F

04/25 19:24, 5年前 , 25F
,再存成y指定的欄位這樣?
04/25 19:24, 25F

04/25 19:24, 5年前 , 26F
用eval試試?
04/25 19:24, 26F

04/25 22:36, 5年前 , 27F
還是看不懂 所以你直接把x當input進去會有什麼問題?你B
04/25 22:36, 27F

04/25 22:36, 5年前 , 28F
裡面不就是用x去做矩陣運算?
04/25 22:36, 28F

04/25 22:37, 5年前 , 29F
你的a b c是在A.m中算出或填入的一些已知矩陣?
04/25 22:37, 29F

04/25 22:38, 5年前 , 30F
那就要看你在B.m中的x大矩陣到底跟a b c這些小矩陣什麼
04/25 22:38, 30F

04/25 22:39, 5年前 , 31F
關係吧 如果維度正確才是像你這樣直接串起來
04/25 22:39, 31F

04/25 22:42, 5年前 , 32F
另外 除非真的非不得已不然還是不要用eval 正常來說沒有
04/25 22:42, 32F

04/25 22:43, 5年前 , 33F
非得要用eval的情況
04/25 22:43, 33F

04/26 00:14, 5年前 , 34F
因為他的B檔案才讀取xls抓數據,看起來是這樣
04/26 00:14, 34F

04/26 00:15, 5年前 , 35F
我猜啦
04/26 00:15, 35F

04/26 00:20, 5年前 , 36F
不過應該可以xls讀取完處理成cell吧?
04/26 00:20, 36F

04/26 00:22, 5年前 , 37F
版本新一點還有readcell可以用
04/26 00:22, 37F

04/26 00:23, 5年前 , 38F

04/26 00:23, 5年前 , 39F
html
04/26 00:23, 39F

04/26 00:24, 5年前 , 40F
或是readmatrix
04/26 00:24, 40F

04/26 00:25, 5年前 , 41F
這樣就可以改成指定index避免eval了
04/26 00:25, 41F

04/26 03:18, 5年前 , 42F
先謝過p大和n大熱心指教~~
04/26 03:18, 42F

04/26 03:19, 5年前 , 43F
@p大: a, b, c要在B.m當中才會從excel讀進去。基本
04/26 03:19, 43F

04/26 03:19, 5年前 , 44F
上A.m只是指定矩陣x要包含a,b,c而已。A.m本身沒有
04/26 03:19, 44F

04/26 03:19, 5年前 , 45F
任何其他資料或是變數。
04/26 03:19, 45F

04/26 03:20, 5年前 , 46F
@n大:readcell也許是個好主意,只是不知道why我的
04/26 03:20, 46F

04/26 03:20, 5年前 , 47F
matlab沒有這功能(R2018a)。另外可否詳述一下所謂
04/26 03:20, 47F

04/26 03:22, 5年前 , 48F
"xls讀取完處理成cell"是甚麼意思?是指儲存成cell
04/26 03:22, 48F

04/26 03:22, 5年前 , 49F
型態嗎?
04/26 03:22, 49F

04/26 07:55, 5年前 , 50F
通常這樣我會從B中定義x和a,b,c的關係 因為沒必要從外部
04/26 07:55, 50F

04/26 07:56, 5年前 , 51F
指定他們的關係 在B.m中搞定就好 不過你如果硬要的話不
04/26 07:56, 51F

04/26 07:56, 5年前 , 52F
是有function handle這種東西嗎? f=@(a,b,c) [a,b,c]
04/26 07:56, 52F

04/26 07:56, 5年前 , 53F
傳f進去B.m 然後在B.m中就x=f(a,b,c)就好了
04/26 07:56, 53F

04/26 07:57, 5年前 , 54F
另外2019a才有readcell 在之前版本用[~,~,raw]=xlsread
04/26 07:57, 54F

04/26 10:05, 5年前 , 55F
對啊,像profyang那樣的用法就存成cell了,可以避免eva
04/26 10:05, 55F

04/26 10:05, 5年前 , 56F
l,不然eval用下去,隔一陣子很容易看不懂當初在幹嘛
04/26 10:05, 56F

04/26 23:54, 5年前 , 57F
小弟不才,今天才知道有handle這招,用handle我的
04/26 23:54, 57F

04/26 23:54, 5年前 , 58F
問題就解決了!!謝謝p大和n大的熱心解惑
04/26 23:54, 58F
文章代碼(AID): #1Sl9ZYTx (MATLAB)
文章代碼(AID): #1Sl9ZYTx (MATLAB)